【发布时间】:2023-03-18 15:47:01
【问题描述】:
我正在尝试向我创建的 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 来克服这个问题,但是在尝试使用诸如 SelectedItem 之类的 WPF 绑定时这是有问题的。
有没有办法解决这个问题?这种行为在 Entity Framework 中似乎也是一样的。
【问题讨论】:
标签: c# wpf linq entity-framework linq-to-sql