1

我正在开发一个应用程序,使用EF w/Self Tracking Entities。因为STE不支持延迟加载,所以在更改外键后开发更新实体导航属性的首选方法或最佳做法是什么?这是在这里解释说:自封闭实体 - 如何更新导航属性?

http://msdn.microsoft.com/en-us/library/ff407090.aspx

“当你通过设置外键属性更改对象之间的关系,参考导航属性设置为null,并不会同步到客户端上的适当的主要实体之后。该图将附加到对象上下文(例如,在调用ApplyChanges方法后),外键属性和导航属性将同步。“

这个问题已经在此解决:

http://blogs.msdn.com/b/diego/archive/2010/10/06/self-tracking-entities-applychanges-and-duplicate-entities.aspx

但这真的做到这一点的最好方法是什么?有什么方法可以帮助你们解决这个问题?我发现很难相信任何人使用自我跟踪实体,如果它很难在你的数据网格中显示导航属性并且当你对记录做出改变时将它们设置为空。这发生在我的应用程序中看起来很奇怪。当然,我可以在保存并更新这些属性后返回服务器,但是我会在DataGird中有一堆空的导航属性,直到我在服务器上执行保存调用。

例如,我有一个主要的详细情况,其中我的用户从datagrid中选择一条记录,然后在下面的表单中进行编辑。更改绑定到我的组合框的外键时,绑定到datagrid中的导航属性的记录将设置为null。如何避免此行为并在外键更改时更新导航属性?

如果我试图通过设置导航属性,而不是外键的改变的关系,我得到以下情况例外,当我尝试提交更改:

“的AcceptChanges不能继续怎么一回事,因为与其他对象键值冲突ObjectStateManager中的对象。在调用AcceptChanges之前确保键值是唯一的。

是不是可以将主详细信息数据网格绑定到实体的导航属性?任何帮助或方向克服这将不胜感激。

谢谢!

回答

0

有点令人沮丧,似乎有关于这些类型的问题的信息很少。最终我能够从这篇博客文章做#2的建议和分组我的服务调用一个方法来弄明白:

http://blogs.msdn.com/b/diego/archive/2010/10/06/self-tracking-entities-applychanges-and-duplicate-entities.aspx

问题寿是,如果我想回去数据库和重新加载我的数据,我将不得不重新加载任何查找表,以便他们回来在同一个图表,以避免错误。我希望在未来版本的STE中有所变化。