【发布时间】:2012-01-31 08:59:04
【问题描述】:
我最近在 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 在重新附加实体时根本无法跟踪此类更改?
【问题讨论】:
标签: c# entity-framework mvvm change-tracking