代码之家  ›  专栏  ›  技术社区  ›  Chen Kinnrot

NHiberinate交叉机惰载问题

  •  1
  • Chen Kinnrot  · 技术社区  · 15 年前

    我有一个客户机、一个服务器和一个数据库 数据库映射到具有Fluent NHibernate的服务器。 到现在为止,一直都还不错 客户端与服务器通过WCF进行对话。 我想在客户端实现延迟加载。

    有什么解决办法吗?

    5 回复  |  直到 13 年前
        1
  •  3
  •   np-hard    15 年前

    Afaik没有解决方案,延迟加载与NHibernate的代理机制一起工作,这是其实现的本质。 有一个项目叫 Nhibernate.Remote 但这已经被抛弃了。 NHibernate可以在WCF上工作,但没有延迟加载。

        2
  •  0
  •   MattC    15 年前

    WCF的本质是在发送前了解您的数据的成形,即它已经被检索并放入某种类型的数据合同中。

    可能您可以在初始服务调用上提供一个参数,以指示是否应该填充子属性,尽管这样做总是很棘手的。

        3
  •  0
  •   Chen Kinnrot    15 年前

    当我意识到这不可能发生时,我决定使用投影和结果转换器。

    效果不错。

    如果我需要加载一些懒惰的加载集合,我只需在服务器上迭代它并将其发送回客户机, 当我想更新一个部分选定的对象时,我必须从数据库中重新选择他,并更新完整的数据实体。

    但这是值得的

        4
  •  0
  •   Andrei Rînea    15 年前

    很抱歉我很悲观,但是让NHibernate在WCF上懒惰地加载是 不工作了 .

        5
  •  0
  •   Cosmin    13 年前

    通过下面的代码,wcf可以处理延迟加载:

    var proxy = myObj as INHibernateProxy;
    myObj = (myObj)proxy.HibernateLazyInitializer.GetImplementation();