代码优先检测更改导航属性

时间:2014-06-24 17:01:42

标签: c# entity-framework entity

我使用EF 6.0和代码优先方法。

我是一个主要实体," Person"使用参考属性"地址"。

当我执行这样的代码时:

Person.Address = new Address();
var state = dbContenxt.Entry(Person).State 

状态变量是未修改的。

这是由于代码第一种方法吗? 如果我首先使用与db相同的代码,那么一切正常并且状态变量结果符合预期,即修改。

1 个答案:

答案 0 :(得分:0)

我自己回答了我的问题。 我已经重新解释了这个问题:

如果通过选择关联项目通过工具箱添加关联,Visual Studio将在Person实体类上创建没有外键的关联。

Person Entity:
Id
Name
Address (Address is navigation property)
--------------
Address Entity:
Id
Location
Person (Person is a navigation property)

相反,如果通过右键单击Address类添加关联,则Visual Studio将显示模式窗口,默认情况下,将在您的实体上添加外键。顺便说说, 您的实体状态将导致修改。

Person Entity:
Id
Name
Address_Id -> Foreign Key, all changes will be properly tracked.
Address (Address is navigation property)
--------------
Address Entity:
Id
Location
Person (Person is a navigation property)

但是,这两个程序都将保存所有更改。