WCF與實體框架的合同?

entity-framework wcf

我已經在這個問題上提出了許多死路一條。據推測,.NET 3.5 SP1在WCF合同中支持ADO.NET實體框架實體。但是,當我尋找有關它的可靠信息時,我沒有得到很多答案。我在MSDN線程上找到了這個片段。有人對這個有經驗麼? [DataContract]發生了什麼?這就是全部嗎?為什麼這麼少的材料呢?

這是Tim Mallalieu在微軟的回答。

默認情況下,實體框架中生成的實體類型是數據合同。如果我要在實體設計器中創建一個簡單模型,如下所示:購物車實體類型默認為DataContract,其所有屬性都註釋為數據成員。然後我們可以在WCF服務中使用它,如下所示:

[ServiceContract]

public interface IService1

{
    [OperationContract]
    Cart[] AllCarts();
}



public class Service1 : IService1

{
    public Cart[] AllCarts() 

    {
        using (MSPetShop4Entities context = new MSPetShop4Entities())

        {
            var carts = from c in context.Carts select c;
            return carts.ToArray();
        }
    }
}

由於實體是DataContracts,您現在可以根據需要推送您的服務並通過網絡發送這些服務。

一般承認的答案

您可以輕鬆地使用ADO.NET數據服務


熱門答案

我建議您不要直接返回實體。不幸的是,Microsoft選擇將特定於實現的數據作為DataContract實體的一部分。這不會與其他平台互操作,甚至可能無法在.NET版本之間進行互操作。

相反,我建議您遵循數據傳輸對像模式,只返回POCO類,它們是實體中數據的副本,沒有任何行為。您可以返回此類的列表以表示表等。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因