gpt4 book ai didi

c# - ORM 存储库模式

转载 作者:行者123 更新时间:2023-11-30 15:45:28 24 4
gpt4 key购买 nike

这更像是我在寻找意见的问题。我正在开发一个同时使用 NHibernate 和 EntityFramework 的项目(这是设计使然,需要灵 active )。因此,我继续并开始研究存储库模式,但遇到了一个小难题。

基本上,我想知道你们对以下方面的看法:

  1. Repository 应该是单例的吗? - 这将允许我保持 session 打开,但与此同时,我认为它将保持与数据库的连接打开。对于 NHibernate,ORM 只能保证同一个 session 中的对象是相同的。这是轻松编码的理想选择,但肯定有一些方法可以使用键并覆盖 GetHashCode 和 Equals 方法来克服这个问题。

  2. 如果它不是单例(或者即使是单例),我是否应该在使用它们后立即关闭连接?对于 NHibernate,这意味着每次“处置”存储库时关闭 session ,这是在每次使用之后。

  3. 您是否为 NHibernate 或 EF 4.0 实现了存储库模式并发现了任何有用的想法?

最佳答案

不要自己编写单例的创建(即单例模式本身),使用像 StructureMap 这样的 IOC 框架来处理对象的生命周期管理。

  1. 这个我们无法回答。如果它是单例的,那么它在内部管理的资源方面必须是线程安全的(比如数据库实时连接的连接池)。线程安全代码并非微不足道。

  2. 这个我们无法回答。这取决于你如何处理你的模型。它还取决于您是否希望人们能够通过需要与数据库建立事件连接的 DataReader 进行阅读。这也会影响诸如需要事件 session 的延迟加载之类的事情,这将成为数据绑定(bind)的噩梦。

  3. 以下是我为 NH 创建存储库模式时想到的所有内容:Creating a common generic and extensible NHiberate Repository version 2

关于c# - ORM 存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com