2011-01-09 78 views
0

我發現了一個問題,但它引用了VS 2010的測試版。我有興趣知道這個問題是否已在RTM中解決?EF4:使用添加服務引用導致STE(自我跟蹤實體)的問題不記得有變化?

基本上它的狀態(通過EF 4 Self Tracking Entities does not work as expected看到它)

請一定重用你的客戶端上的 自跟蹤實體模板的 生成的實體代碼。 如果您使用生成的代理代碼添加在Visual Studio或 服務引用 一些其他的工具,事情看起來正確的 在大多數情況下,但你會發現 的實體實際上並不保持 跟蹤其上的變化客戶。

我非常習慣使用添加服務引用,並且它在過去一直非常適合我,但當然我並沒有使用STE(自我跟蹤實體)。 VS 2010 RTM和STE模板的問題仍然存在嗎?

,如果我做創建通過代碼的代理,而不是添加的服務,那麼所有的類不會被創建將他們?

任何幫助或洞察真的讚賞

回答

1

這不是一個問題,它從來沒有問題。這是絕對的預期和正確的行爲。 STE是包含數據和邏輯的類(邏輯跟蹤更改)。

添加服務引用時,您的客戶端代理服務器代碼是從服務的元數據生成的。元數據以WSDL形式公開。 WSDL是基於XML的服務描述,其中也包含傳輸數據類型的XSD描述。 XSD只能描述數據格式,而不能描述類型實現的相關邏輯。默認情況下,WSDL中描述的所有未知數據類型都是在客戶端上生成的。因此,當您通過添加服務引用生成具有所有數據類型的客戶端代理時,跟蹤邏輯將丟失。

爲了解決這個問題,你必須做兩件事情:

  • 創建單獨的程序和所有的國營地方本次大會。然後在所有涉及的層之間共享此程序集(是的,您必須在客戶端中使用添加引用)。
  • 然後,您可以使用添加服務引用和「引用程序集中的重用類型」選中。
+0

謝謝拉迪斯拉夫,在外部裝配中實現我的類型(ste)是我無論如何都想做的事情,所以這對我來說是個好東西。我想使用添加服務引用時的神奇之處在於,引用組合中的「重用類型」選項可以讓事情起作用。可以解釋一下這個和做一個Add服務引用之間的區別是什麼?再次感謝。 – Martin 2011-01-09 20:23:32