如您所知,当我们使用延迟模式检索NHibernate
中的数据时,如果我们需要加载其余数据,则代理对象会创建真实对象以保持连接跟踪等,但是当你想要序列化对象以通过Web Api
发送它时(例如)你会得到一个错误,说明你有一个代理对象并且无法序列化,有很多方法使这个代理人沉默
- NhibernateUtil库
- 3rdParty Library
- 编写代码以在序列化进度中查找代理对象并关闭代理属性
我正在寻找最好的模式来做到这一点,有没有人做过这件事并准备与我们分享?
答案 0 :(得分:3)
将NHibernate实体(代理)对象转换为DTO对我来说是更好的方法。请参阅此question。
这样做,您可以按照自己的方式自由使用DTO。使用NHibernate Entity对象时遇到的问题无处不在。
通过将实体转换为DTO可以克服这些问题。
请注意,此方法还存在其他一些问题,以及我提到过的问题。