В последнее время я много использовал Entity Framework в приложении MVFM WPF и столкнулся с некоторыми проблемами.Для отображения данных мои view-модели используют короткоживущий 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 просто не может отслеживать изменения такого рода при повторном присоединении объекта?