2012-01-03 37 views
2

我以爲,對於一個給定的ObjectContext,如果我做一個查詢和檢索一個唯一的對象(ieusing主鍵(一個或多個)),使用相同的ObjectContext會給我非常相同的第二查詢實例的對象。實體框架獲取不同的情況下

然而,這並不一定如此。

有人可以對此有所瞭解嗎?

謝謝!

下面是一些代碼: (在這種情況下,我有一個複合鍵)

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 2012-01-03 19:37:48

+0

實體框架保持在其緩存(來源每一個唯一的實體鍵的唯一入口:HTTP:// msdn.microsoft.com/en-us/library/bb896269.aspx)。因此,除非您更改實體鍵或從緩存中刪除第一個對象,否則不應該發生這種情況。你有代碼來重現你觀察到的行爲嗎? – GaussZ 2012-01-03 19:44:30

+0

是的,我有代碼 - 我更新了我的問題。 – Fernando 2012-01-03 19:50:52

回答

0

的問題是由於不正確的MergeOption設置。在這種特殊情況下,它被設置爲NoTracking不正確。

相關問題