繁体   English   中英

如何通过WCF从实体数据模型公开单个类

[英]How can I expose a single class from Entity Data Model via WCF

我有一个数据库,我通过Ado.net实体模型映射了它,现在我想通过WCF服务从我的模型中公开一个类。 如何实现?

我不确切知道要创建哪些类,但是假设您有一个名为MyClass的类。 您需要像以下示例一样添加属性DataContractDataMember

[DataContract]
public class MyClass
{
    [DataMember]
    public Guid Id{ get; set; }
}

如果使用的是Entity Framework,则默认情况下会包含该属性。 因此,您无需将它们添加到EF生成的实体中。 您可以通过访问模型内​​部生成的文件来进行检查。

需要考虑的重要一点是,如果您不使用MyClass作为参数或不使用它作为返回值,那么当您在客户端应用程序中生成服务引用时,该类将不会出现。

希望能帮助到你!

在执行此操作时要非常小心,EF类通常不能与序列化程序一起很好地使用(如果它们具有导航属性,则根本不起作用)。

更好的方法是创建一个“克隆”类,使它成为数据协定的一部分,并创建一个介于两者之间的翻译器类(或函数)。 这样,只有您真正关心的数据才被公开,而您不必处理序列化器对导航属性的迷恋。

不直接通过WCF公开EF生成的类的另一个很好的理由是,如果模型的不重要部分发生更改,您不一定希望更改合同。

答案提供了一个很好的示例,说明了如何完成此任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM