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