首页 文章

循环引用,NHibernate和WCF

提问于
浏览
2

这个问题在网络上流行多年,我还没有找到好的解决方案 . 主题是传递一个对象列表,其中包含由NHibernate填充的循环引用(有或没有延迟加载 - 有些站点sais它不能用懒惰完成)

这是一个例子:

[DataContract]
class Person
{
   [DataMemeber]
   string Name
   [DateMember]
   IList<Child> myChilds;  
}

[DataContract]
class Child
{
   [DataMemeber]
   string Name
   [DateMember]
   Person Father   
}

当我尝试在我的数据库中获取所有人员时:服务器代码将是:

ICriteria crit = session.CreateCriteria(typeof(Person)));
IList<Base> queryResult = crit.List<Base>();

我在SERVER SIDE-所有人的列表中得到了很好的结果,并且在每个人的内部我得到了所有儿子的列表(并且在每个儿子里面 - 我得到一个人的对象,里面有他的儿子的列表等....)

现在,尝试通过WCF获取此列表会使通道出现故障 . (如果我从子项中删除Person对象 - 它工作正常) .

解决方案我已经尝试过并没有解决这个问题:将IsReference = true添加到[DataContract] - 没有帮助 . 将所有映射移动到not.Lazyload() - 没有帮助 .

任何想法如何解决这个问题而不重写WCF?

谢谢,Dani

3 回答

相关问题