我正在使用Entity Framework Code First with Migrations(EF 5),C#和asp.net MVC 3.
我正在执行应该是一个非常基本的更新操作。我有一个特殊的情况,我需要从数据库中获取原始对象,然后将其与修改后的对象进行比较。有问题的实体引用了另外两个凭借虚拟关键字延迟加载的实体。
我花了一段时间,但我发现我可以加载原始实体而不通过“AsNoTracking()”方法在上下文中跟踪它。这解决了一个问题。
当前的问题是,当我执行:
时db.Entry(modifiedObject).Reference(obj => obj.Reference1).Load();
db.Entry(modifiedObject).Reference(obj => obj.Reference2).Load();
不更新对象属性。一些值由表单发布并通过模型绑定器绑定(不是自定义绑定)。这实际上只是因为引用属性的验证被触发而我找不到关闭它们的方法。
我似乎记得,在MVC 2中,除非你打电话,否则你不能修改发布到动作的对象的引用:
ModelState.Clear();
我已经尝试过但它没有奏效。我似乎还记得Phill Haack说他们在MVC 3中改变了这一点。
所以我的问题是,如何加载这些引用?