首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用服务器串行化时刻使NHibernate代理保持沉默

如何在应用服务器串行化时刻使NHibernate代理保持沉默
EN

Stack Overflow用户
提问于 2017-03-22 01:34:44
回答 1查看 144关注 0票数 0

正如您所知道的,当我们使用延迟模式检索NHibernate中的数据时,代理对象将创建真正的对象来保持连接跟踪,如果我们需要加载数据的其余部分等等,但是当您想序列化该对象以通过Web Api (例如)发送它时,您将得到一个错误,它说您有一个代理对象,并且它不能序列化,有许多方法可以使这个代理保持沉默。

- NhibernateUtil库

- 3 3rdParty图书馆

-编写一段代码,在序列化过程中查找代理对象,并使代理属性离开

我正在寻找最好的模式来做到这一点,有谁也做了它以及准备与我们分享它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-22 07:13:16

将NHibernate实体(代理)对象转换为DTO对我来说更好。请参考此question

这样做,您可以自由地使用DTO的方式。在使用NHibernate实体对象时存在多个问题,到处都是如此。

  • 数据会暴露到我想要隐藏的UI中(或者只在需要的时候公开),比如密码、用户类型、权限等等。
  • 在引用/联接上,当属性被访问时,NHibernate会执行额外的查询,从而使延迟加载的使用无效。
  • 向用户(实体)公开不必要的数据会给bug造成混乱和空白。
  • 持久性实现泄漏到BLL/UI中。实体不是为UI设计的。它不可能在所有情况下都为UI服务。
  • 我们使用DTO属性上的属性进行用户输入验证,这在实体中看起来很奇怪。

可以通过将实体转换为DTO来克服这些问题。

请注意,这种方法还有其他一些问题,我刚才也提到过。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42941200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档