每次请求或每次需要时都应创建一次PetaPoco数据库类吗?

时间:2012-05-18 13:37:07

标签: .net-3.5 webforms petapoco

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

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

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

这些方法中的哪些方法(如果有的话)最适合?我也看到PetaPoco支持“共享连接”,所以我想要查看的内容是为了最小化与数据库的打开连接数量?

1 个答案:

答案 0 :(得分:4)

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