这可能是一个非常简单的问题,但是或多或少,我要求这样,我可以围绕数据访问块如何打开和关闭连接。
首先,我使用了类似企业库的东西大约10年,并在实体等之间来回切换。
无论如何,当我使用Database类的CreateDatabase()函数时,是否会立即打开与数据库的连接,还是在我使用ExecuteReader之类的实际调用时打开连接?
如何处理关闭连接?在DAL中使用连接后,我是否必须明确调用连接?在完成Reader等操作后,企业库如何确保连接已关闭?
此外,打开和关闭连接的最佳做法是什么?如果CreateDatabase立即打开连接?有一小部分代码要分享吗?
答案 0 :(得分:5)
CreateDatabase()不会打开与数据库的连接。各个命令通常处理连接的打开和关闭(例如ExecuteNonQuery)。
当然总是有例外。对于ExecuteReader,立即关闭连接是没有意义的。设置ExecuteReader以在处理DbDataReader时关闭连接,这就是使用ExecuteReader看到此模式的原因:
using (IDataReader reader = db.ExecuteReader(cmd))
{
// Process results
}
退出使用块时,将丢弃DbDataReader并关闭连接。
Enterprise Library Developer's Guide也触及了这个主题。
因此,简而言之,您通常不必处理连接管理。图书馆将这项工作抽象出来并为您管理。