[DataContractAttribute(IsReference = true)]和[DataContract]之间有什么区别?

时间:2011-11-12 18:13:39

标签: wcf json

我正在尝试编写一个WCF Web服务,它将我的数据作为JSON返回,因此我可以从某个客户端脚本中调用它。

我知道我需要在[DataContract]属性中装饰我想要从Web方法返回的任何类,然后在[DataMember]中装饰任何成员。记住我想返回实体类型,所以我去了实体ObjectContext类。

然而,当我查看.edmx文件时,我可以看到这些类已经被装饰过......

[EdmEntityTypeAttribute(NamespaceName="PteDotNetModel", Name="AssocFile")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AssocFile : EntityObject

当我尝试添加[DataContract]时,我收到一条错误消息,说我不能拥有重复的属性。我很困惑,虽然他们很相似,但他们显然是不同的吗?

我的问题的第二部分是如何通过WCF服务返回实体类型?

1 个答案:

答案 0 :(得分:4)

这两个属性是相同的;可以排除尾随“属性”From MSDN

  

按照惯例,所有属性名称都以“Attribute”结尾,以区别于.NET Framework中的其他项。但是,在代码中使用属性时,不需要指定属性后缀。