当我使用Microsoft.Practices.EnterpriseLibrary.Data.Database和ExecuteScalar方法时,我没有找到关闭连接或Dispose的正确方法。 我不能使用使用块导致对象不实现IDisposable。如果我使用Finally块,我还没弄清楚如何处理。我是否需要这样做,或者我的第一个使用块将在ExecuteScalar上处理/关闭连接?
这是我的代码:
DatabaseProviderFactory factory = new DatabaseProviderFactory();
DatabaseFactory.SetDatabaseProviderFactory(factory, false);
Database db = ... ;
// Initialize command
using (DbCommand dbCommand = db.GetStoredProcCommand("XXXXXX"))
{
object r;
// Execute command
using (r = (object)db.ExecuteScalar(dbCommand)) //Getting error here
{
//Other code here
}
}
答案 0 :(得分:0)
不需要第二个using语句。
这里应该处理的对象是dbCommand
。不是从它的方法返回的对象。
第一个using
语句负责处理它。
如果您根本不想使用using
,(在dbCommand上),那么您可以在finally块中使用try/finally
进行处理。
以下链接说明了如何做到这一点。
https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/using-objects