使用PetaPoco,我应该如何处理Database
类的创建?我的应用程序可能会使用各种存储库(不完全是DDD存储库,更像是网关存储库)来封装查询。
由于我将拥有多个需要访问相同数据库连接的存储库,因此我考虑创建一个在构造函数中创建Database类的基类,并在其析构函数中调用Dispose
,然后简单地调用它所有派生类中的对象,所以我认为在这种情况下我不需要使用块(因为当类超出范围时它将关闭数据库本身)。
我还考虑在Application_BeginRequest
方法的global.axax中创建数据库对象,所以它在每个页面都可用,但我不完全确定它是如何工作的(我想我需要一些)那种实例化它的DatabaseManager
类?我只看到这种方法用于像NHibernate和RavenDB这样的东西),这似乎把数据库对象的使用推到了ASPX页面本身而不是通过存储库/数据图层类,看起来很臭。
这些方法中的哪些方法(如果有的话)最适合?我也看到PetaPoco支持“共享连接”,所以我想要查看的内容是为了最小化与数据库的打开连接数量?
答案 0 :(得分:4)
我通常会为每个请求创建一个Database
。它是一个轻量级的对象。在ActionFilter
中使用Controller
基类。