2012-01-03 2 views
2

Я предположил, что для данного объекта ObjectContext, если я выполняю запрос и извлекаю уникальный объект (т. Е. Использует первичный ключ (ы)), второй запрос, использующий тот же объект ObjectContext, дал бы мне очень пример объекта.Entity Framework, извлекающий разные экземпляры

Однако это не обязательно так.

Может кто-то пролить свет на это?

Спасибо!

Вот код: (в данном случае у меня есть составной ключ)

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

Я считаю, что ответ на этот вопрос заключается в MergeOption для юридических лиц. Я заметил, что те, которые не работают, настроены на NoTracking, в отличие от опции AppendOnly, которая по умолчанию. Это, вероятно, корень проблемы, которую я испытываю.

+1

Каков фактический запрос для каждого .. вы можете ответить на свой вопрос на основе того, что вы просили. – MethodMan

+0

Entity Framework поддерживает уникальную запись для каждого уникального ключа сущности в кеше (Источник: http: // msdn.microsoft.com/en-us/library/bb896269.aspx). Поэтому, если вы не измените ключ сущности или не удалите первый объект из кеша, этого не должно произойти. У вас есть код для воспроизведения вашего наблюдаемого поведения? – GaussZ

+0

Да, у меня есть код - я обновил свой вопрос. – Fernando

ответ

0

Проблема связана с неправильной настройкой MergeOption. В этом конкретном случае он был неправильно установлен для NoTracking.

Смежные вопросы