我想从 SqlDataReader
中检索所有 System.Data.IDataRecord
。使用 LINQ,这很简单,但我希望能够处理所有 SQL 对象并保持数据完好无损。以下是我所拥有的:
private static List<System.Data.IDataRecord> getRecords()
{
List<System.Data.IDataRecord> records;
//Make a SqlConnection and SqlCommand.
using (SqlDataReader reader = command.ExecuteReader())
{
records = reader.Cast<System.Data.IDataRecord>().ToList();
}
//Dispose of SqlCommand and SqlConnection.
return records;
}
但这是我的问题:当 getRecords()
完成时,我有我的数据,并且我已要求释放所有 SQL 对象。但是我是否以某种方式卡在数据上会阻止适当的资源处理?或者一旦垃圾收集器开始工作,我的数据最终会变得无效吗?我认为答案是否定的,但我正试图找到确定的东西。我相信 Dispose()
只会删除非托管资源,并且由于我将数据放在列表中,所以我认为它是安全的。谢谢。
最佳答案
这会很好用。
IDataRecord
实例不受 SqlDataReader.Dispose
的任何影响。它们包含自己的数据和模式信息的完整副本,完全独立于读者。
关于c# - 处理后SqlDataReader记录的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129155/