如果要更改任何一个,实体框架会立即同步外键和导航属性,而不仅仅是在调用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后立即从引用对象获取信息。引用对象的数据确定用户编辑记录的其他选项。
答案 0 :(得分:1)
似乎this question回答了我的问题:
所有映射的属性都必须是虚拟的。只要一个映射的属性不是虚拟的,整个事情就不再起作用了,没有人告诉你。
我还没有看到一种简单的方法来验证这是否已经完成,但如果完成,实体框架将应用一些“更有效的更改跟踪”,这也会影响外键属性更新导航属性,副反之亦然。
哦,这只适用于Entity Framework代理类。查询现有对象或使用DbSet.Create()
方法时,可以获得这些。直接创建模型类的新实例不会自动执行任何操作。