2015-06-25 44 views
1

我正在重寫MVVM應用程序的一部分,以便WCF服務位於ViewModel和Model之間。WOC序列化POCOs

我知道我需要將數據庫交互代碼從VM移動到服務,然後重寫剩餘的VM來與服務代理對象和服務交互,而不是模型。

雖然WCF的服務引用生成的代理類是可怕的 - 所有代碼都有附加的「k_BackingField」。我發現這個鏈接(http://www.integratedwebsystems.com/wcf-data-contracts-and-k__backingfield-property-naming/)似乎提供了一種解決方法,其中您將裝飾類明確地向序列化程序提供信息,而不是推斷它。我爲我正在使用的課程做了這個,並且它在服務參考中沒有任何區別。同樣奇怪的字段名稱存在等。

如何從我的POCO代理中刪除「k_BackingField」?我希望我可以反序列化回到相同的POCO模型類而不是服務引用級別的代理,所以如果這是一個選項,我更願意。

如果這是相關的,這裏是關於設置的一些細節: - 模型是代碼優先的EF6(最新)。 - 模型使用具有類型參數的通用存儲庫的存儲庫模式。 - WCF服務可以直接訪問模型項目並在代碼中使用它。 VM可以直接訪問模型項目,並在其代碼中使用(?)(正在重寫)。 - VM具有通過VS UI完成的WCF服務的服務引用。

+0

您是否在使用[WCF OData](http://blogs.msdn.com/b/odatateam/archive/2013/10/02/using-wcf-data-services-5-6-0-with-entity -framework-6.aspx)與EF?這是您應該執行EF和WCF交互的首選方式。 –

+0

如果您將此作爲答案添加,我會接受它作爲答案,因爲這完全爲我繞過了問題。 – Yushatak

回答

0

實體框架不建議混合傳統的WCF和EF,你會遇到像你發現的導航屬性問題。他們建議您使用WCF Data Services。來自Data services網站的Here is a tutorial幫助您入門。