是否应该为每个请求创建一次 PetaPoco 数据库类,还是在每次需要时创建一次



使用 PetaPoco,我应该如何处理Database类的创建? 我的应用程序可能会使用各种存储库(不完全是 DDD 存储库,更像是网关存储库(来封装查询。

由于我将有多个存储库需要访问相同的数据库连接,因此我正在考虑创建一个基类,该基类在构造函数中创建数据库类并在其析构函数中调用Dispose,并且只需在所有派生类中调用此对象,因此我认为在这种情况下我不需要 using 块(因为当类超出范围时,它将关闭数据库本身(。

我还考虑过在 global.axax 中创建数据库对象,使用 Application_BeginRequest 方法,以便它在每个页面上都可用,但我不完全确定它是如何工作的(我想我需要某种DatabaseManager类来实例化它? 我只见过这种方法用于 NHibernate 和 RavenDB 之类的东西(,这似乎将数据库对象的使用推送到 ASPX 页面本身,而不是通过存储库/数据层类,这似乎很臭。

任何建议,如果有的话,这些方法中的哪一种最有效? 我还看到 PetaPoco 支持"共享连接",那么我也想看看这一点,以尽量减少与数据库的打开连接数量吗?

我通常为每个请求创建一个Database。它是一个轻量级的物体。在ActionFilter中使用Controller基类。

最新更新