WCF + NHibernate + Lazy Loading

时间:2011-06-08 07:05:08

标签: wcf

我在使用WCF和NHibernate通过线路传输延迟加载数据时遇到问题。我一共有超过5,000,000条记录。

应用程序是多层的,使用MVVM并且用作:WCF(net.tcp绑定) - >数据访问层 - >业务层 - > UI。

WCF或NHibernate没有问题。映射是正确的,并且它非常懒惰地加载WCF端的数据。

问题在于通过网络将其发送到客户端。延迟加载的数据开始扩展到实际,最少需要30分钟。

是否有可能停止这种扩张?

这是类架构:

class A

{

  //properties

   IList<B> list;

}



class B

{

  //properties

   IList<C> c_list;

   IList<D> d_list;

   IList<E> e_list;

   IList<F> f_list;

   IList<G> g_list;

}



class C

{

  //properties

   IList<D> d_list;

   IList<E> e_list;

   IList<F> f_list;

   IList<G> g_list;

}


class D

{

  //properties

}

class E

{

  //properties

}



class F

{

  //properties

}



class G

{

  //properties

}

2 个答案:

答案 0 :(得分:1)

关闭延迟加载或使用DTO!这是解决方案。传输5M记录看起来像废话,如果您的集合是延迟加载的,则初始序列化可以触发数十万个数据库选择。此外,如果每个记录只有1B,你将转移5MB - 我怀疑该记录有1B所以我们可以谈论转移几十MB。

答案 1 :(得分:0)

推荐的方法不是通过WCF公开您的域模型。你应该通过网络发送DTO。在这种情况下,您将能够控制服务器端的延迟加载并正确设计它。我还建议使用NHibernate Profiler。 5百万条记录是大量数据 - 考虑在服务器端实现分页