모든 System.Data.IDataRecord
을 SqlDataReader
에서 검색하고 싶습니다. LINQ를 사용하면 간단하지만 모든 SQL 개체를 삭제하고 데이터를 그대로 유지할 수 있기를 바랍니다.처분 후 SqlDataReader 레코드 사용
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()
이 관리되지 않는 리소스 만 제거 할 것이라고 생각합니다. 그리고 목록에 데이터를 배치 했으므로 안전하다고 생각합니다. 감사.
예; 그들은 그 시점에서 단지 POCO로 간주 될 수 있습니다. –
정말요? 나는 몇 년 전에 'IDataRecord'를 독자의 범위를 벗어난 곳에 놓아두고 문제를 일으키는 커다란 버그에 뛰어 들었다고 맹세 할 수있었습니다. 그 일이 있은 후에는 절대로 다시 시도하지 않았습니다. –
@ScottChamberlain은 어디서나 문서에서 명시 적으로 보장되지 않기 때문에 ILspy를보고 확인했습니다. 어쩌면 그렇게 항상 그렇지 않을 수도 있습니다. –