2

我对 .NET 4 的新实体框架有一个奇怪的问题

我有一个 SQL Server 2005 (EXPRESS) 数据库,我的服务使用实体框架将数据写入两个表。假设表是 TableA 和 TableB。TableB 具有 TableA 的外键。在我的程序中有几个并行写入数据的线程。每个线程都有自己的 ObjectContext。该程序创建 TableA 对象并将其放入对象上下文中。然后创建 TableB 的对象并将其放入对象上下文。这对几个 TableA 项目重复。

最后,当调用 ObjectContext.Save 方法时,我在日志中看到一个死锁错误:

System.Data.SqlClient.SqlException:事务(进程 ID 56)与另一个进程在锁资源上死锁,并已被选为死锁受害者。重新运行事务。

似乎它以某种方式取决于数据库选项,因为它仅在特定数据库上重现。一个新的数据库没有重现该问题。Entity Framework 执行批量插入时,哪些数据库\表设置会影响死锁?或者可能是其他地方的问题?

4

1 回答 1

1

根据您的评论:

TableB 没有在重现问题的数据库中设置 primaryKey

于 2011-08-17T22:31:27.933 回答