1

我正在使用具有一些循环引用的旧数据库。当我从 SL4 客户端使用我的 Ria 服务时。(通过我的 ORM 映射器生成的实体)我收到以下错误:

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

[Query]
public IQueryable<TblPublicationPage> GetPublicationPages(int publicationId)
{
    return this.PublicationLogic.Value.GetPublicationPages(publicationId);
}

我知道如何通过 CyclicReferencesAware 属性或 IsRefence=true 为普通 WCF 启用它。但我不知道如何使用 WCF Ria 服务来做到这一点。

4

2 回答 2

0

使用 [CyclicReferencesAware(true)]

于 2011-10-13T16:33:57.113 回答
0

我现在更好地理解了 WCF Ria 服务,我只是尝试像在普通 WCF 中那样修复它,并将元数据类添加到我生成的实体中:

[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] 属性装饰元数据类中的每个属性......

于 2011-07-02T15:32:02.810 回答