2014-10-01 51 views
0

假設EF中的兩個實體指針總是equal(假設它們指向相同的行和數據庫上下文)是否安全?無論我如何遍歷連接表等來訪問它們。EF對象中的平等

還是有例外嗎?據我所知,他們總是會引用同一個對象,因此永遠都是平等的。

Person p1 = dbcontext.Persons.FirstOrDefault(); 
Person p2 = dbcontext.Persons.FirstOrdefault(); 
Debug.Write(p1.Equals(p2)); // true 
+0

如何確保,你是唯一一個訪問數據源在你的代碼需要執行時間跨度? – Marco 2014-10-01 11:19:46

+0

如果它們來自同一個'dbcontext',那麼你可能是真的,但我不是100%肯定的。如果它們來自不同的'dbcontext',那麼絕對不是。 – Maarten 2014-10-01 11:20:35

+0

@Serv那麼,基於假設源沒有修改。 – Johan 2014-10-01 11:20:36

回答

1

從我的理解,當一個對象被查詢時,對象變化跟蹤功能(如果啓用)將返回已查詢同一個對象。默認情況下已啓用。如果刷新對象,那麼情況可能不是這樣(意思是上下文中的Refresh方法)。

我也不能保證這種行爲100%......

+0

感謝您的闡述。我會用一個擴展來比較按鍵的相等性,以防萬一 – Johan 2014-10-01 12:09:22

+0

一個好方法;只要確保在這種情況下你總是比較相同的對象:-) – 2014-10-01 12:31:54