我正在用与Hanselman showed it could be done for Stackoverflow几乎相同的方式创建一个API。我有一堆EntityObject实体框架生成的类和一个DataService类来将它们序列化为Atom和JSON。我想通过web服务公开一些生成的属性。考虑一下通过连接First-和LastName生成的FullName (但有些更复杂)。我已经将它们添加到扩展实体框架EntityObject的分部类中,并为它们提供了[DataMember]属性,但它们并没有出现在服务中。这里有一个示例属性(set是为了更好地衡量,没有它也不能工作):
[DataMember]
public string FullName
{
get
{
return (this.FirstName ?? "") + " " + (this.LastName ?? "");
}
set { }
}根据these discussions在MSDN论坛上的说法,这是一个已知的问题。有没有人找到了好的解决办法,或者有没有人有替代方案的建议?
发布于 2010-09-13 23:04:50
我在通过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服务接口引用了这个类,那么额外的属性就会被序列化,并可供服务的使用者使用。
例如:
[OperationContract]
List<Teacher> GetTeachers();https://stackoverflow.com/questions/3692167
复制相似问题