假设编写 nhibernate 映射文件不是大问题....或者用属性污染域对象也不是大问题....
有什么优点和缺点?
是否存在任何基本技术问题?什么会影响人们的选择?
不太确定所有的权衡是什么。
最佳答案
AR 的最大优点是它为您提供现成的存储库并为您进行 session 管理。 ActiveRecordBase<T>
和 ActiveRecordMediator<T>
是您最终会在 NHibernate 下组装自己的礼物。避免 XML 映射是另一个优势。 AR 映射属性使用简单,但足够灵活,甚至可以映射相当“传统”的数据库。
AR 的最大缺点是它积极鼓励您错误地思考 NHibernate。也就是说,因为默认 session 管理是每次调用 session ,所以您习惯了持久化对象断开连接并且必须是 Save()
的想法。 d 发生变化时。这不是 NHibernate 应该如何工作的——通常你会有每工作单元或请求或线程的 session ,并且对象将在 session 的生命周期内保持连接,因此更改会自动持久化。如果你开始使用 AR,然后发现你需要切换到 session-per-request 来使延迟加载工作——这在文档中没有很好的解释——当一个你不期望的对象时,你会感到非常惊讶在 session 刷新时保存。
请记住,CaSTLe 团队将 AR 编写为 CaSTLe Monorail 的补充产品,CaSTLe Monorail 是 .NET 的类 Rails 框架。它的设计考虑到了这种用途。它不能很好地适应更多层次、解耦的设计。
按原样使用它,但不要将其视为 NHibernate 的快捷方式。如果您想使用 NH 但避免映射文件,请使用 NHibernate Attributes 或更好的 Fluent NHibernate。
关于c# - 使用 CaSTLe Active Record 与 Straight NHibernate 的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369978/