2010-09-20 20 views
0

我一直在尋找使用Linq實體與WCF的一些項目,我們正在做。到目前爲止,所有的東西都很成功,但有一件事我不確定。 Linq-to-entities創建具有EntityKey和ExtensionData屬性的對象。我對他們在服務中的訪問感到高興,但擔心客戶似乎也可以訪問它,因爲它們是EntityObject類中的公共屬性。當使用Linq-to-entities和WCF時,是否有辦法將EntityKey和ExtensionData訪問更改爲受保護的?

在我看來,這會導致泄漏的實現,因爲客戶端不應該意識到使用linq-to-entities獲取此對象的事實。

回答

2

您不能更改訪問修飾符,因爲EntityKey屬性是從父EntityObject類繼承的,它將其顯示爲公共。 ExtensionData屬性與實體框架無關。它由IExtensibleDataObject定義,它在Visual Studio或svcutil生成的所有WCF代理中實現。再次,您無法更改其訪問修飾符。

這就是爲什麼人們不會將實體公開爲WCF中的數據契約的原因。如果您使用EF v4.0,則可以使用POCO類或自我跟蹤實體來代替繁重的實體。如果您不使用EF v4.0,則應該創建單獨的數據傳輸對象或嘗試爲您的實體實施DataContractSurrogates

+0

謝謝拉迪斯拉夫。我希望有一些黑魔法,就像我可以將一些配置文件指向另一個根對象來繼承,並且這些工具會生成相應的代碼。不幸的是,我想我可能不得不採取POCO路線。謝謝 – uriDium 2010-09-20 09:15:41

相關問題