我正在以几乎相同的方式创建 API Hanselman showed it could be done for Stackoverflow .我有一堆 EntityObject
Entity Framework 生成的类和一个 DataService
东西来将它们序列化为 Atom 和 JSON。我想通过网络服务公开一些生成的属性。将 FullName 视为通过连接 First- 和 LastName 生成的(但有些更复杂)。我已将它们添加到扩展 Entity Framework EntityObject 的部分类中,并为它们提供了 [DataMember]
属性,但它们没有出现在服务中。这是一个示例属性(set
是为了很好的衡量标准而引入的,没有它也不起作用):
[DataMember]
public string FullName
{
get
{
return (this.FirstName ?? "") + " " + (this.LastName ?? "");
}
set { }
}
根据 these discussions在 MSDN 论坛上,这是一个已知问题。有没有人找到好的解决方法或有没有人对替代方案有建议?
最佳答案
我在通过 WCF 服务公开实体对象时遇到了同样的问题,并使用了您链接到 here 的解决方法也就是在属性中添加如下属性,强制序列化。
[global::System.Runtime.Serialization.DataMemberAttribute()]
我还没有找到任何“更好”的方法来让它工作。
例如,给定一个名为 Teacher 的实体,其中包含 Title、Forenames 和 Surname 字段,您可以为 Teacher 添加一个部分类,例如:
public partial class Teacher
{
[global::System.Runtime.Serialization.DataMemberAttribute()]
public string FullName
{
get { return string.Format("{0} {1} {2}", Title, Forenames, Surname); }
set { }
}
}
然后只要您的 WCF 服务接口(interface)引用此类,额外的属性就会被序列化并可供服务的使用者使用。
例如
[OperationContract]
List<Teacher> GetTeachers();
关于c# - WCF 数据服务,序列化 Entity Framework 部分类的附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692167/