我有一个客户端服务器和数据库 db使用流畅的nhibernate映射到服务器。 到现在为止还挺好 客户端使用wcf与服务器通信。 我想在客户端实现延迟加载。
那里有解决方案吗?
答案 0 :(得分:3)
AFAIK没有解决方案,延迟加载与nhibernate的代理机制一起使用,这是其实现非常固有的。 有一个名为Nhibernate.Remote的项目,但已被放弃。 nhibernate可以在wcf上工作,但不会延迟加载。
答案 1 :(得分:0)
WCF的本质是学习在发送之前对您的数据进行整形,即,它已经被检索并放入某种数据合同中。
可能你可以在初始服务电话中提供一个参数来表明是否应该填充子属性,尽管你走多远总是很棘手。
答案 2 :(得分:0)
当我意识到它不可能发生时,我决定使用投影和结果转换器。
效果很好。
如果我需要加载一些延迟加载集合,我只需在服务器上迭代它并将其发送回客户端, 当我想要更新部分选择的对象时,我必须从db中重新选择他并更新完整的数据实体。
但是值得的
答案 3 :(得分:0)
我很抱歉感到悲观,但是让NHibernate在WCF上加载延迟加载是不会开始工作。
答案 4 :(得分:0)
使用以下代码,WCF可以使用延迟加载:
var proxy = myObj as INHibernateProxy;
myObj = (myObj)proxy.HibernateLazyInitializer.GetImplementation();