2012-01-03 6 views
2

私は、特定のObjectContextに対して、クエリを実行して一意のキー(つまり主キーを使用する)を取得すると、同じObjectContextを使用する2番目のクエリは私に非常にオブジェクトのインスタンス。異なるインスタンスを取得する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にあると考えています。私は、デフォルトであるAppendOnlyオプションとは対照的に、動作していないものがNoTrackingに設定されていることに気付きました。これはおそらく私が抱えている問題の根源です。

+1

実際のクエリは何ですか?あなたが尋ねたことに基づいて、自分の質問に答えることができます。 – MethodMan

+0

Entity Frameworkは、キャッシュ内のすべての一意のエンティティキーに固有のエントリを保持します(ソース:http:// msdn.microsoft.com/en-us/library/bb896269.aspx)。したがって、エンティティキーを変更したり、最初のオブジェクトをキャッシュから削除したりしない限り、これは起こりません。観察された振る舞いを再現するコードがありますか? – GaussZ

+0

はいコードがあります - 私は質問を更新しました。 – Fernando

答えて

0

問題はMergeOptionの設定が正しくないためです。この特定のケースでは、NoTrackingに誤って設定されていました。

関連する問題