使用Enterprise Library 5.0数据访问问题

Sea*_*ean 1 c# asp.net enterprise-library asp.net-mvc-3

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

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

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

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

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

Khe*_*pri 5

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

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

using (IDataReader reader = db.ExecuteReader(cmd))
{
  // Process results
} 
Run Code Online (Sandbox Code Playgroud)

当退出使用块时,DbDataReader被丢弃并且连接被关闭.

企业库开发人员指南关于这个问题倒是一点为好.

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