Я пытаюсь добавить многопоточность в созданное мною приложение WPF, чтобы создать более отзывчивый интерфейс, но поскольку контексты данных 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 .
Есть ли способ обойти это? Такое поведение, по-видимому, одинаково и в Entity Framework.