WCF Ria服务和循环引用

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

我使用的是一个有一些循环引用的遗留数据库。当我从SL4客户端使用Ria服务时。通过我的ORM映射器生成的实体出现以下错误:

尝试序列化参数时出错。InnerException消息是“xxx.Entities.TblPublicationPage类型的对象图”包含循环,如果禁用引用跟踪,则无法序列化

[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