2012-01-03 3 views
2

주어진 ObjectContext에 대해 쿼리를 수행하고 기본 키를 사용하여 쿼리하는 경우 동일한 ObjectContext를 사용하는 두 번째 쿼리가 매우 과 같다고 가정했습니다. 인스턴스의입니다.Entity Framework에서 다른 인스턴스를 검색하는 경우

그러나 이것은 반드시 그런 것은 아닙니다.

누군가가이 문제에 대해 밝힐 수 있습니까?

감사합니다. 나는이 문제에 대한 대답은 개체의 MergeOption에있다 생각 (이 경우에 I가 복합 키가)

var x = context.MyEntity.FirstOrDefault(e => e.Key1 == 1 && e.Key2 == 5); 
var y = context.MyEntity.FirstOrDefault(e => e.Key1 == 1 && e.Key2 == 5); 
var isSame = x == y; 

UPDATE

: 여기

몇 가지 코드입니다. 나는 Default가 아닌 AppendOnly 옵션과는 반대로 NoTracking으로 설정되어있는 것을 보았다. 이것은 내가 가지고있는 문제의 근원 일 것입니다.

+1

실제 쿼리는 무엇입니까? 질문 한 내용에 따라 질문에 대답 할 수 있습니다. – MethodMan

+0

Entity Framework는 캐시의 모든 고유 엔터티 키에 대해 고유 한 항목을 유지합니다 (출처 : http : // msdn.microsoft.com/en-us/library/bb896269.aspx). 따라서 엔터티 키를 변경하거나 캐시에서 첫 번째 개체를 제거하지 않는 한 이런 일이 발생하지 않아야합니다. 관찰 된 행동을 재현 할 수있는 코드가 있습니까? – GaussZ

+0

예 코드가 있습니다 - 내 질문을 업데이트했습니다. – Fernando

답변

0

이 문제는 잘못된 MergeOption 설정으로 인한 것입니다. 이 특별한 경우에는 NoTracking에 잘못 설정되었습니다.

관련 문제