我正在嘗試將一些多線程添加到我創建的WPF應用程序中,以創建響應性更好的接口,但由於Linq-to-SQL數據上下文不是線程安全,我被迫每個線程使用一個。實體在不同Linq-to-SQL上下文中的相等性
我的問題是,從兩個不同的上下文拉同一個實體,顯然是不相等的。看看下面的代碼示例,在這裏我有一個簡單的數據庫與員工記錄:
var context1 = new DataModelDataContext();
var context2 = new DataModelDataContext();
var emp1 = context1.Employees.Single(x => x.ID == 1);
var emp2 = context2.Employees.Single(x => x.ID == 1);
Console.WriteLine(string.Format("Employees equal: {0}", emp1 == emp2));
Console.ReadKey();
運行時,這將返回:
Employees equal: False
在我心中我希望這些對象是相等的,如如果我將它們從相同的環境中拉出來,他們會是。我可以通過檢查emp1.ID == emp2.ID來解決此問題,但嘗試使用WPF綁定時會出現問題,例如SelectedItem。
有沒有辦法解決這個問題?這種行爲在實體框架中看起來也是一樣的。
+1只是想寫相同。 op只是給出了自己的答案:''emp1.ID == emp2.ID''將完成這項工作(如果''''''''是唯一的主鍵或課程) –
覆蓋平等似乎是要走的路 –