如何不为WCF客户端隐藏公开对象类型中的某些字段

本文关键字:类型 字段 对象 何不 WCF 客户端 隐藏 | 更新日期: 2023-09-27 18:04:01

我们正在使用EF自动生成我们的模型,当一个公开的方法使用它时,代理客户端的创建为我们创建相应的对象类型。

所以,如果WCF有如下的方法签名和类型,所有字段在使用该对象时都以智能感知的方式呈现。

class Thing
{
  public int Wanted { get; set; }
  public int Unwanted { get; set; }
}
[OperationContract]
public Thing GetSomething() { ... }
到目前为止,我们一直在使用自定义模型,在客户端命名空间定义中使用它。然而,这意味着我们需要手动创建一堆属性为DataMember的属性,而且维护起来很麻烦。

是否有可能控制哪些自动生成的字段被暴露,以便当我们创建一个web引用到一个服务,暴露GetSomething,它只显示那些我们想要的?当然,我们仍然希望使用EF在服务器端构建模型结构,以便在对数据库进行更改时可以简单地重新生成模型。

如何不为WCF客户端隐藏公开对象类型中的某些字段

当EF生成你的类时,它添加DataMember属性呢?

即使您为您的服务使用自定义类,它也可能基于您的EF生成的类,因此,如果您使用T4自定义模板((文件)可以节省你的时间。下面你可以看看这个解决方案是否对你有帮助:

在实体框架POCO模板中添加[DataMember] [DataContract]属性

希望能有所帮助。