我正在使用带有自我跟踪实体的 EF 开发应用程序。因为 STE 不支持延迟加载,所以在更改外键后更新实体导航属性的首选方法或最佳实践是什么?这在这里解释:
http://msdn.microsoft.com/en-us/library/ff407090.aspx
“当你通过设置外键属性改变对象之间的关系时,引用导航属性设置为null,并且不同步到客户端上相应的主体实体。图附加到对象上下文后(例如,在你调用 ApplyChanges 方法),外键属性和导航属性是同步的。”
此问题已在此处解决:
但这真的是最好的方法吗?你们已经使用或想到了哪些方法来解决此限制?我发现很难相信任何人都在使用自我跟踪实体,如果它很难在您的数据网格中显示导航属性并且在您对记录进行更改时将它们设置为 null。发生这种情况时,它在我的应用程序中看起来很时髦。当然,我可以在保存并更新这些属性后返回服务器,但我的数据网格中会有一堆空导航属性,直到我调用保存在服务器上。
例如,我有一个主详细信息场景,其中我的用户从数据网格中选择一条记录,然后在下面的表单中对其进行编辑。当更改我的组合框绑定到的外键时,绑定到数据网格中导航属性的记录被设置为空。当外键更改时,如何避免这种行为并更新导航属性?
如果我尝试通过设置导航属性而不是外键来更改关系,则在尝试提交更改时会出现以下异常:
“AcceptChanges 无法继续,因为对象键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前,请确保键值是唯一的。”
是否无法将主详细信息数据网格绑定到实体的导航属性?任何有关克服此问题的帮助或指导将不胜感激。
谢谢!