使用Enterprise Library 5.0数据访问问题

时间:2011-06-06 23:32:27

标签: c# asp.net asp.net-mvc-3 enterprise-library

这可能是一个非常简单的问题,但是或多或少,我要求这样,我可以围绕数据访问块如何打开和关闭连接。

首先,我使用了类似企业库的东西大约10年,并在实体等之间来回切换。

无论如何,当我使用Database类的CreateDatabase()函数时,是否会立即打开与数据库的连接,还是在我使用ExecuteReader之类的实际调用时打开连接?

如何处理关闭连接?在DAL中使用连接后,我是否必须明确调用连接?在完成Reader等操作后,企业库如何确保连接已关闭?

此外,打开和关闭连接的最佳做法是什么?如果CreateDatabase立即打开连接?有一小部分代码要分享吗?

1 个答案:

答案 0 :(得分:5)

CreateDatabase()不会打开与数据库的连接。各个命令通常处理连接的打开和关闭(例如ExecuteNonQuery)。

当然总是有例外。对于ExecuteReader,立即关闭连接是没有意义的。设置ExecuteReader以在处理DbDataReader时关闭连接,这就是使用ExecuteReader看到此模式的原因:

using (IDataReader reader = db.ExecuteReader(cmd))
{
  // Process results
} 

退出使用块时,将丢弃DbDataReader并关闭连接。

Enterprise Library Developer's Guide也触及了这个主题。

因此,简而言之,您通常不必处理连接管理。图书馆将这项工作抽象出来并为您管理。