WCF Ria 服务和循环引用

发布于 2024-11-18 04:26:45 字数 592 浏览 6 评论 0原文

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

I'm using a legacy database that has some cyclic references. When I consume my Ria service from a SL4 client. (generated entities through my ORM mapper) I get the following error:

There was an error while trying to serialize parameter http://tempuri.org/:GetPublicationPagesResult. The InnerException message was 'Object graph for type 'xxx.Entities.TblPublicationPage' contains cycles and cannot be serialized if reference tracking is disabled.

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

I know how to enable it for plain WCF through CyclicReferencesAware attribute or IsRefence=true. But I can't figure out how to do this with WCF Ria Services.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我现在更好地了解 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] 属性...

I now understand WCF Ria Services better, I just tried to fix it like I would do it in plain WCF and added a metadataclass to my generated entities:

[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; }
    }
}

Only disadvantages at this point is I have to decorate every property in the metadata class with a [DataMember] attribute...

青衫儰鉨ミ守葔 2024-11-25 04:26:45

使用 [CyclicReferencesAware(true)]

Use [CyclicReferencesAware(true)]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文