【问题标题】:Using Enterprise Library 5.0 Data Access questions使用 Enterprise Library 5.0 数据访问问题
【发布时间】:2011-06-06 23:32:27
【问题描述】:

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

首先,我使用 Enterprise Library 之类的东西大约有 10 年了,并且在 Entities 等之间来回切换。

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

它如何处理关闭连接?在 DAL 中使用连接后,我是否必须明确调用关闭连接?使用完 Reader 等后,Enterprise Library 如何确保连接关闭?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    当 using 块退出时,DbDataReader 被释放并关闭连接。

    Enterprise Library Developer's Guide 也涉及到了一些主题。

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

    【讨论】:

    • 谢谢。是的,我将 using 用于 IDataReader,但我只是在验证插入/更新等,因为我正在编写一个典型的存储库包装器,并希望确保我不会以 SQL 连接池的方式编写它用完了! :) 再次感谢! +1 向上/+回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2012-05-10
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多