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中有所變化。