【发布时间】:2016-08-23 07:35:02
【问题描述】:
我必须做些什么才能让 Entity Framework 在外键和导航属性发生更改时立即同步,而不仅仅是在调用 SaveChanges 之后?
public class Model
{
[Key]
public int ModelId { get; set; }
public string Name { get; set; }
public virtual Model Other { get; set; }
[ForeignKey("Other")]
public int OtherId { get; set; }
// Other regular mapped properties not shown
}
我使用的是 EF 6.1.3 Code First。更改跟踪未明确停用,应使用。
我需要这个,因为我的 UI 网格控件只更改了 ID(在此处更改导航对象会导致麻烦),但我的业务逻辑需要在 ID 更改后立即来自引用对象的信息,然后再保存记录。被引用对象的数据决定了用户编辑记录的其他选项。
【问题讨论】:
-
为什么需要这样的方式?您的业务用例是什么?
-
((IObjectContextAdapter)context).ObjectContext.DetectChanges()你在找什么吗? -
我的 UI 网格只更改了 ID(在此处更改导航对象会导致麻烦),但我的业务逻辑需要在 ID 更改后立即来自引用对象的信息,然后再保存记录。
-
@AdilMammadov 我不确定那是什么。我不想显式实现所有自动属性,这会使代码爆炸。我读过 EF 应该能够做我正在寻找的事情,但没有人描述如何到达那里。
-
@ygoe,我没有说任何关于明确实现所有自动属性 :)。
DetectChanges方法应该修复身份,但你不能直接在DbContext上调用它,所以你从DbContext到((IObjectContextAdapter)context).ObjectContext得到ObjectContext。然后调用ObjectContext的DetectChanges方法。
标签: .net entity-framework foreign-keys