我有一些在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值将其正确存储在数据库中。
答案 0 :(得分:1)
为什么不设置Navigation property
的FK而不是设置实际对象。
而不是这样做,因为你只是将它持久化到数据库而不是在内存中做任何事情
Address.User = ApplicationUser;
Address.User_ID (is not updated)
到这个
Address.User_ID ApplicationUser.Id;