【问题标题】:WCF Ria Services and Cyclic referencesWCF Ria 服务和循环引用
【发布时间】:2011-07-02 07:18:20
【问题描述】:

我正在使用具有一些循环引用的旧数据库。当我从 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 服务来做到这一点。

【问题讨论】:

  • 你使用的是自制的 ORM 吗?
  • 没有来自 Telerik 的 OpenAccess。暴露为 ADO.net 服务我没有循环问题,但对于 SL,我更喜欢 WCF RIA

标签: wcf ria cyclic-reference


【解决方案1】:

我现在更好地理解了 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] 属性装饰元数据类中的每个属性...

【讨论】:

    【解决方案2】:

    使用 [CyclicReferencesAware(true)]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多