0
using-DbContext 범위 내에 모든 논리 함수가 있습니다. 나중에이 코드를 컨텍스트를 사용하여 목록을로드 한 다음이 형식으로 변경하고 즉시 처리하고 추가 계산을 위해 목록을 사용하는 쓰기 (리팩토링)를 원합니다.DbContext가 삭제 된 후에 EF-linq-query-result를 사용하는 것이 유효합니까?
Test()
{
var list = (List<MyObject>)null;
using(var ctx = new MyDbContext())
{
list = ctx.MyTable.ToList();
}
// is the list guaranteed to be unchanged?
foreach(var item in list)
{
}
}
유일한 차이점은 (내가 생각하는 것처럼)이 EF는 개체의 캐시를 떨어졌다, 그래서 데이터베이스 anylonger (나는 보통 원하지 않는 것을/어쨌든 사용) 업데이트 할 수 없습니다.
컨텍스트가 삭제 된 후에도 목록을 사용하는 것이 안전합니까?
TBH, 그것은 일반적으로 라인을 작동하지 않습니다. 하지만 당신 말이 맞아요, 이런 식으로 하나의 선언문에, 나는 또한 정규식으로 가야합니다. – user5997884
질문이 약간 이상합니다. 이런 식으로하지 않으면 EF 쿼리의 결과를 어떻게 사용하고 싶습니까? 'ToList' 없이도 작동하는지 묻는 것이 더 합리적 일 것입니다. 내 대답은 아니오 야". 컨텍스트는 사용 후에 삭제되기 때문에. –
'IEnumerable'으로리스트를 선언하고'ToList'를 제거하면 어떻게되는지 봅니다. 'foreach'에서 예외가 생깁니다. 'ToList'는 실제로 _deferred executed_ LINQ 쿼리를 실행합니다. 결과는 메모리에로드되며 더 이상 데이터베이스와 관련이 없습니다. –