我想从
但这里有个问题:当
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()
只会移除非托管的资源,而且由于我将数据放在了List中,所以应该是安全的。谢谢。
IDataRecord
在读取器范围之外存在,这导致了问题。那之后我再也没有尝试过。 - Scott ChamberlainIDataRecord
没有受到影响吗? - user1325179SqlDataReader.GetEnumerator()
。它会复制所有相关的模式数据。 - Cory Nelson