Я пытаюсь выяснить, как идентифицировать, что родительский объект является грязным, когда один из объектов в дочерней коллекции был изменен с помощью функций контекста NHibernate.NHibernate: Найти грязный объект в дочерней коллекции
Я имею в виду следующий случай:
public class Parent
{
public IList<Child> Childs { get; set; }
}
public class Child
{
public String Name {get; set; }
}
...
var parent = session.Get<Parent>(1);
parent.Childs[0].Name = "new name";
// here <code>session.IsEntityDirty(parent)</code> should return true
Я знаю о расширениях ISession как здесь http://nhibernate.info/doc/howto/various/finding-dirty-properties-in-nhibernate.html и здесь для коллекции NHibernate: Find dirty collections. Но ни первый (он не отслеживает только свойства), ни второй (он отслеживает только операции add/delete на объекте коллекции).
Я хочу также упомянуть, что я предпочитаю использовать простые POCO вместо STE.
Я был бы очень признателен за решение.
Да, я знаю, что старые хранилища имеют одинаковые значения для коллекций, поэтому это расширение не работает. Конечно, можно перебрать все свойства, но я нашел это решение немного громоздким. Кроме того, я должен учитывать, что дочерние объекты имеют ссылку на родительский объект (как свойство). – dmitrygrig