난 DAL에 공급하는 방법이있다 :LinqToSql을 사용하여 수익률 데이터베이스 레코드를 반환합니까?
public IEnumerable<RecordType> GetRecords()
{
using (LinqDataContext context = new LinqDataContext())
{
var records = context.RecordTable;
foreach (RecordType record in records)
{
yield return record;
}
}
}
소비자 방법은 foreach
루프 레코드를 사용한다. 이 방법은 LinqToSql이 장면 뒤에서 DataReader를 사용하기 때문에 RecordTable
의 모든 레코드를 캐싱하지 않아도 메모리 사용량을 절약하고자합니다.
- 수율을 돌려 위의 자원을 보존하고 빨리 배열에 모든 레코드를 캐시에 비해 작동하는 것이 사실인가 (.ToArray()) :
그래도 난이 시나리오에 대한 두 가지 질문이 있습니까? 오류가 소비하는 방법의
foreach
루프 내에서 발생할 경우 소비 방법은 (중간에foreach
루프를 중단 할 경우 가 데이터 연결이 자동으로 적절하게 (필자는
using
문을 의미) 종료됩니다 같은 발견 또는 필수 기록 및break
)?
사실, 2는 "호출자가 올바르게 작동하는 한"- 엄격히 말하면 대부분의 '사용 중'은 –
입니다. @MarcGravell 나는 당신이 (정확하게) 완전한 Enumerable을 열거하거나 다른 것을 놓치고 있습니까? –
예, 반복기를 수동으로 걷고 잘못 수행합니다. 대부분의 제정신 인 사람들이 사용할 foreach를 사용할 때 문제가되지 않습니다. –