Entity Framework не отслеживает изменения коллекции при повторном подключении объекта

В последнее время я много использовал Entity Framework в приложении MVVM WPF и столкнулся с некоторыми проблемами. Для отображения данных мои модели представления используют недолговечный ObjectContext. Эти модели представления будут использоваться в длительном процессе, поэтому я предпочел использовать короткоживущий ObjectContext, чтобы не ухудшать производительность.

По сути, это означает, что мои сущности потребляются в отключенном режиме. Эти объекты можно создавать, просматривать, обновлять и удалять. У меня не было проблем с сохранением изменений обратно в базу данных в отключенном режиме. Но я обнаружил частный случай, когда изменения не сохраняются без появления ошибки при вызове метода SaveChanges () . Это происходит, когда я пытаюсь обновить объект, у которого есть свойство коллекции. Скалярное свойство объекта сохраняется без проблем, но изменения в коллекциях не отражаются в базе данных, как если бы он не смог отследить эти изменения при повторном подключении.

Вот пример кода моего случая, когда я меняю имя объекта, а затем добавляю объект в его коллекцию отчетов. После SaveChanges () в базе данных отражалось только имя клиента.

this.Client.Name = "Test Client";
this.Client.Reports.Add(new Report { Name = "Test Report" });

using (ReportCompositionEntities entities = new ReportCompositionEntities(this.connectionStringName))
{
    entities.Clients.ApplyCurrentValues(this.Client);
    entities.SaveChanges();
}

Я делаю что-то не так, или EF просто не может отслеживать такие изменения при повторном подключении объекта?

7
задан Ucodia 31 January 2012 в 10:02
поделиться