2011-08-20 3 views
0

나는 ef 4 모델을 가지고 있으며 자체 추적 엔티티를 사용하고 있습니다. 이 모델에는 Organization이라는 엔티티가 있습니다. 각 조직은 많은 위치 (주소)를 가질 수 있습니다. 나는 따라서, (그래서 그것을 삭제할 수 있습니다) 하나의 위치를 ​​선택하려고하면 :자식 엔티티에 대해 여러 개의 열린 데이터 리더가있는 Erorr

var location = _container.Locations.FirstOrDefault(l => l.Id == id); 

을 나는 그래서 다른 열 어차피 공개 데이터 판독기가 이미 존재한다는 erorr를 얻을. 다음 작업을 수행 할 경우 :

var location = _container.Locations.Include("Organisation").FirstOrDefault(l => l.Id == id); 

그러면 모두 정상적으로 작동합니다.

Intellitrace를 사용하여 실패한 쿼리에서 ADO 명령을 실행하여 위치를 얻은 다음 위치와 조직을 가져 오는 또 다른 명령을 실행하는 것을 볼 수 있습니다.

이것은 selftracking 엔티티에 대해 다르게 수행해야하는 버그입니까?

건배

답변

0

아니요, 버그가 아닙니다. 이것은 대개 하나의 쿼리 결과를 반복하고이 반복에서 다른 쿼리를 실행하는 경우에 발생합니다 (느린로드로 인해 발생할 수도 있지만 지연 추적은 자체 추적 엔티티에서 지원되지 않습니다). 가장 간단한 솔루션은 단순히 여러 활성 데이터 판독기를 허용하는 것입니다 (데이터베이스가 지원해야 함). SQL Server 2005 이상 버전의 경우 연결 문자열에이 부분을 추가하면됩니다. MultipleActiveResultSets=true;

+0

이미 MARS를 사용할 수 있습니다. 임 하나의 linq 쿼리를 사용하여 - 기본 구현은 두 번째 SQL 쿼리를하고 그래서 나는 이것이 여전히 버그라고 생각합니다. 나는 간단한 해결 방법을 가지고 있으므로 귀찮게는하지 않는다. – Jonesie

관련 문제