WCF Ria服务和循环引用
我使用的是一个有一些循环引用的遗留数据库。当我从SL4客户端使用Ria服务时。通过我的ORM映射器生成的实体出现以下错误: 尝试序列化参数时出错。InnerException消息是“xxx.Entities.TblPublicationPage类型的对象图”包含循环,如果禁用引用跟踪,则无法序列化WCF Ria服务和循环引用,wcf,ria,cyclic-reference,Wcf,Ria,Cyclic Reference,我使用的是一个有一些循环引用的遗留数据库。当我从SL4客户端使用Ria服务时。通过我的ORM映射器生成的实体出现以下错误: 尝试序列化参数时出错。InnerException消息是“xxx.Entities.TblPublicationPage类型的对象图”包含循环,如果禁用引用跟踪,则无法序列化 [Query] public IQueryable<TblPublicationPage> GetPublicationPages(int publicationId) { ret
[Query]
public IQueryable<TblPublicationPage> GetPublicationPages(int publicationId)
{
return this.PublicationLogic.Value.GetPublicationPages(publicationId);
}
我知道如何通过CyclicReferencesAware属性或IsRefence=true为普通WCF启用它。但我不知道如何使用WCF Ria服务做到这一点 我现在更了解WCF Ria服务,我只是尝试像在普通WCF中一样修复它,并向生成的实体添加了metadataclass:
[DataContract(IsReference = true)]
[DataServiceKey("PublicationPageID")]
[DebuggerDisplay("PublicationPageID: {PublicationPageID}")]
[MetadataType(typeof(TblPublicationPageMetadata))]
public partial class TblPublicationPage
{
internal sealed class TblPublicationPageMetadata
{
[DataMember]
public int PublicationPageID { get; set; }
}
}
目前唯一的缺点是我必须用[DataMember]属性装饰元数据类中的每个属性…使用[CycleCreferencesWareTrue]您使用的是自制的ORM吗?没有Telerik的OpenAccess。作为ADO.net服务公开,我没有循环问题,但对于SL,我更喜欢WCF RIA