2012-10-29 35 views
4

任何时候我读了关于Close()和Dispose(),我最终看到很多引用只是使用使用块,但我还没有找到如何在WebMatrix C#Razor语法中使用Using Block。WebMatrix Database.Open ...关闭()和处置()

所以我不想要一个答案,只是说使用一个使用块,除非你可以告诉我如何用例子。

具体使用Database.Open()的,我跟我的连接完成后/查询

我的问题是:

  • 我应该同时使用关闭()和Dispose()方法?
  • 无论我是否调用Close()然后Dispose()或Dispose()然后Close()都有影响吗?

希望简单回答简单的问题。谢谢

回答

4

数据库帮助程序的ASP.NET Web页面框架示例不包括对Close或Dispose的调用,因为框架本身旨在在请求结束时为您调用Dispose。如果您使用ADO.NET而不是数据库帮助程序,则应该使用使用语句。话虽如此,没有什么可从使用块包装数据库助手来电阻止你:

IEnumerable<dynamic> floaters = null; 
using(var db = Database.Open("MyDb")){ 
    var sql = "SELECT * From LifeRafts"; 
    floaters = db.Query(sql); 
} 

如果你想自己管理这一切,你可以简单地调用Close或Dispose。无论如何,它们都会导致连接返回到ADO.NET连接池。

+0

这给了我一个在ASP.Net Web Pages/WebMatrix中使用块的好例子。谢谢|使用数据库帮助器时,在WebMatrix中使用数据库连接/查询代码是否真的没有好处? – cusman

+0

如果我使用ADO.NET是因为我想为某个数据库操作设置自己的自定义超时,并且不想因为任何原因而使用使用阻止,您是否可以回答我的Close()和Dispose()问题场景?我具体使用两者吗?以任何特定顺序? – cusman

+0

我已经为你更新了我的答案,不,使用数据库帮助程序时没有任何好处。 –