2008-11-13 2 views
2

Если я выберу много строк из одной таблицы с одним экземпляром DataContext. И затем я могу внести некоторые изменения в свойствах в строках, могу ли я внести изменения в базу данных только для одной из выбранных строк?Внесите изменения только одного объекта

ответ

4

Да, вы можете.

Прежде всего вам нужно выделить объекты, которые вы хотите отменить. Затем вы можете использовать свой класс DataContext для переопределения этих объектов со значениями из базы данных.

MyEntity e1, e2, e3 // changed entities 
... 
// keep the changes only for e3 
List<MyEntity> undoList = new List<MyEntity>(); 
undoList.Add(e1); 
undoList.Add(e2); 
myDataContext.Refresh(RefreshMode.OverwriteCurrentValues, undoList); 

myDataContext.SubmitChanges(); 

EDIT:

Вы можете отслеживать все измененные объекты в DataContext, как это:

MyEntity changedEntityToSubmit; // first you need to know what is the entity you need to submit. 
List<object> allChangedEntities = new List<object>(myDataContext.GetChangeSet().Updates); 
allChangedEntities.Remove(changedEntityToSubmit); 

myDataContext.Refresh(RefreshMode.OverwriteCurrentValues, allChangedEntities); 

myDataContext.SubmitChanges(); 

Этот код только с учетом обновлений. Вам также может потребоваться рассмотреть изменения в вставках и удалениях. Это зависит от вас.

+0

Спасибо за ответ, его точный ответ на мой вопрос. Но на практике этот метод не так полезен, потому что, если я не знаю всех объектов, отслеживаемых с помощью DataContext, я не могу гарантировать, что только указанный объект будет отправлен. Но у вас есть +1 очко. – TcKs 2008-11-14 07:46:40

Смежные вопросы