C# 如何通过WCF从实体数据模型公开单个类
我有一个数据库,我通过Ado.net实体模型映射它,现在我想通过WCF服务从我的模型中公开一个类。如何实现它?我不知道您创建了哪些类,但假设您有一个名为C# 如何通过WCF从实体数据模型公开单个类,c#,wcf,entity-framework,C#,Wcf,Entity Framework,我有一个数据库,我通过Ado.net实体模型映射它,现在我想通过WCF服务从我的模型中公开一个类。如何实现它?我不知道您创建了哪些类,但假设您有一个名为MyClass的类。您需要添加属性DataContract和DataMember,如以下示例所示: [DataContract] public class MyClass { [DataMember] public Guid Id{ get; set; } } 如果您使用的是实体框架,则默认情况下会包含该属性。因此,您不需要将它
MyClass
的类。您需要添加属性DataContract
和DataMember
,如以下示例所示:
[DataContract]
public class MyClass
{
[DataMember]
public Guid Id{ get; set; }
}
如果您使用的是实体框架,则默认情况下会包含该属性。因此,您不需要将它们添加到EF生成的实体中。您可以通过访问模型内部生成的文件来检查它
一个重要的事情是,如果您不使用<代码> MyClass <代码>作为参数,或者不使用它作为返回,那么在您的客户端应用程序中生成服务引用时,该类就不会出现。
希望有帮助 执行此操作时要非常小心,EF类通常不能很好地使用序列化程序(如果它们具有导航属性,则根本不能) 更好的方法是创建一个“克隆”类,将其作为数据契约的一部分,并创建一个转换器类(或函数)来介于两者之间。这样,只有您真正关心的数据才会被公开,您不必处理序列化程序在导航属性上的问题 不直接通过WCF公开EF生成的类的另一个很好的理由是,若模型的一个不重要的部分发生了变化,您不一定希望契约发生变化 答案为如何实现这一点提供了一个很好的例子