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

Wcf [DataContractAttribute(IsReference=true)]和[DataContract]之间有什么区别,wcf,json,Wcf,Json,我正在尝试编写一个WCF Web服务,它将以JSON的形式返回我的数据,以便我可以从一些客户端脚本调用它 我知道我需要在[DataContract]属性中修饰我想从Web方法返回的任何类,然后在[DataMember]属性中修饰任何成员。记住,我想返回实体类型,所以我转到实体ObjectContext类 然而,当我查看.edmx文件时,我可以看到这些类被修饰成这样 [EdmEntityTypeAttribute(NamespaceName="PteDotNetModel", Name="Asso

我正在尝试编写一个WCF Web服务,它将以JSON的形式返回我的数据,以便我可以从一些客户端脚本调用它

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

然而,当我查看.edmx文件时,我可以看到这些类被修饰成这样

[EdmEntityTypeAttribute(NamespaceName="PteDotNetModel", Name="AssocFile")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AssocFile : EntityObject
然后,当我尝试添加
[DataContract]
时,我收到一个错误,说我不能有重复的属性。我很困惑,虽然他们是相似的,但显然是不同的,不是吗


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

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

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


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

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


DataContractAttribute.IsReference属性()的默认值为false。DataContractAttribute.IsReference属性()的默认值为false。