更新导航属性不设置外键

时间:2014-02-03 22:09:18

标签: c# entity-framework entity-framework-6

我有一些在Entity Framework 4.0上运行的旧代码。我将模型更新为最新的和最好的(v6),并且这样做我不得不对如何创建/注入事物做一些小的改动。我从 Legacy ObjectContext模型转到T4代模型。

我一直在运行一些测试,并查看结果,大多数事情看起来很棒。但我确实有一个或两个测试,我更新或添加对实体对象的引用,然后验证外键是否已正确更新...长话短说,不是。

例如:我获取了一个地址并且它缺少了它的所有者,因此我使用ApplicationUser对象并将其设置在Address.User属性上。从历史上看,这会将Address.User_ID更新为与ApplicationUser匹配的正确值,但它不再执行此操作。

为什么有任何想法?在我不知道的新EF世界中是否有一些设置?

Address.User =  ApplicationUser;
Address.User_ID  (is not updated)

更新:如果我允许保留对象,则会使用正确的FK值将其正确存储在数据库中。

1 个答案:

答案 0 :(得分:1)

为什么不设置Navigation property的FK而不是设置实际对象。

而不是这样做,因为你只是将它持久化到数据库而不是在内存中做任何事情

Address.User =  ApplicationUser;
Address.User_ID  (is not updated)

到这个

Address.User_ID  ApplicationUser.Id;