首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF数据服务,序列化来自实体框架分部类的附加属性

WCF数据服务,序列化来自实体框架分部类的附加属性
EN

Stack Overflow用户
提问于 2010-09-12 02:38:59
回答 1查看 3.1K关注 0票数 8

我正在用与Hanselman showed it could be done for Stackoverflow几乎相同的方式创建一个API。我有一堆EntityObject实体框架生成的类和一个DataService类来将它们序列化为Atom和JSON。我想通过web服务公开一些生成的属性。考虑一下通过连接First-和LastName生成的FullName (但有些更复杂)。我已经将它们添加到扩展实体框架EntityObject的分部类中,并为它们提供了[DataMember]属性,但它们并没有出现在服务中。这里有一个示例属性(set是为了更好地衡量,没有它也不能工作):

代码语言:javascript
复制
[DataMember]
public string FullName
{
    get
    {
        return (this.FirstName ?? "") + " " + (this.LastName ?? "");
    }
    set { }
}

根据these discussions在MSDN论坛上的说法,这是一个已知的问题。有没有人找到了好的解决办法,或者有没有人有替代方案的建议?

EN

回答 1

Stack Overflow用户

发布于 2010-09-13 23:04:50

我在通过WCF服务公开实体对象时遇到了同样的问题,并使用了您链接到here的变通方法,即向属性添加以下属性以强制序列化它们。

代码语言:javascript
复制
[global::System.Runtime.Serialization.DataMemberAttribute()] 

我还没有找到任何“更好”的方法来让它工作。

例如,给定一个名为Teacher的实体,其中包含字段Title、Forenames和Surname,您可以为Teacher添加一个部分类,如下所示:

代码语言:javascript
复制
public partial class Teacher
{
    [global::System.Runtime.Serialization.DataMemberAttribute()] 
    public string FullName
    {
        get { return string.Format("{0} {1} {2}", Title, Forenames, Surname); }
        set { }
    }
}

然后,只要您的WCF服务接口引用了这个类,那么额外的属性就会被序列化,并可供服务的使用者使用。

例如:

代码语言:javascript
复制
[OperationContract]
List<Teacher> GetTeachers();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3692167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档