Как проверить, есть ли измененные объекты Linq2SQL перед фиксацией - PullRequest
1 голос
/ 20 января 2012

У меня есть несколько классов, например, Parent and Children. У Parent есть коллекция объектов Children, и я использую Linq 2 SQL для их сохранения. Проблема заключается в следующем: если некоторые свойства изменяются в объекте Children, мне может потребоваться обновить родительский объект, и мне нужно проверить его перед сохранением.

У меня есть ChildrenRepository с методом Insert (Children children), который в основном вызывает метод InsertOnSubmit (Children children) из Linq 2 SQL, и метод Save (), который вызывает SubmitChanges () из Linq 2 SQL. Я хочу проверить в методе Save (), есть ли какой-либо объект Children, который был изменен, и, если он есть, выполнить работу. Как я мог это сделать?

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Если у вас есть ссылка на дочерний объект:

var changes = context.GetChangeSet();
if (changes.Updates.Contains(yourChildObject))
    // Update Parent

else

changes.Updates.Where(o => o is Child);
1 голос
/ 20 января 2012

делает родительские изменения частью логики домена, так что вы можете позволить слою доступа к данным выполнять свою работу, не требуя вашего вмешательства. вот один пример

var child = parent.Child(...);
child.Update(...);

и логика обновления, предполагающая двунаправленную связь.

класс Детский { публичное обновление void (...); { установить свойства ребенка; Parent.Property = новое значение; } }

в этом сценарии вам не нужно беспокоиться о внутренностях доступа к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...