代码之家  ›  专栏  ›  技术社区  ›  Ian Oakes

如何在WCF上传输NHibernate PersistentGenericSet

  •  0
  • Ian Oakes  · 技术社区  · 15 年前

    我试图通过wcf发送由nhibernate检索到的对象,但是每当a具有icollection属性时,我会收到一个异常。

    当nhibernate从数据库获取数据时,此属性将使用persistentGenericSet实例初始化。

    有没有办法通过wcf发送persistentGenericSet?

    -或

    有没有办法让nhibernate用另一种类型初始化这些属性?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Oskar Berggren    12 年前

    persistentGenericSet是nhibernate(用于跟踪集合中的更改)的一部分。它基于ISET接口和来自IESI.collections的类,后者用于填补.NET框架中的空白,因为没有集合类型。我想wcf序列化这种类型有问题。

    一个快速的解决方法是将nhibernate映射更改为使用包而不是集合。然后你可以用普通的 IList<T> 而不是 Set<T> 在你的课上。

    更好的解决方案是创建 remote facade 哪个发送 DTOs 到您的wcf终结点。这将允许您将内部类型的接口与作为远程服务公开的接口分开。吉米·博加兹 Automapper 是一个很好的工具,有助于映射过程。

    编辑

    在重新阅读问题之后,我环顾四周,发现了这个 article 它描述了通过wcf发送nhibernate集合的解决方案。大卫布莱恩写了一篇很好的后续文章 article .