来自实体框架的 WCF 合同?

2024-03-03

我在这个问题上遇到了很多死胡同。据称,.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();
        }
    }
}

由于实体是数据契约,您现在可以根据需要滚动服务并通过网络发送这些服务。


我建议您不要直接返回实体。不幸的是,Microsoft 选择将特定于实现的数据作为实体的 DataContract 的一部分。这不会与其他平台互操作,并且即使在 .NET 版本之间也可能无法互操作。

相反,我建议您遵循数据传输对象模式,只返回 POCO 类,这些类是实体中数据的副本,没有任何行为。您可以返回此类的列表来表示表等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自实体框架的 WCF 合同? 的相关文章

随机推荐