我遇到了新的.NET 4实体框架的奇怪问题
我有一个SQL Server 2005(EXPRESS)数据库,我的服务使用实体框架将数据写入两个表。假设表是TableA和TableB。 TableB具有TableA的外键。在我的程序中,有几个线程并行写入数据。每个线程都有自己的ObjectContext。该程序创建TableA对象并将其放在对象上下文中。然后创建TableB的对象并将其放到对象上下文中。这会重复几个TableA项目。
最后,当调用ObjectContext.Save方法时,我在日志中看到了死锁错误:
System.Data.SqlClient.SqlException:事务(进程ID 56)在锁资源上与另一个进程死锁,并被选为死锁牺牲品。重新运行交易。
它似乎以某种方式依赖于数据库选项,因为它仅在特定数据库上重现。一个新的数据库没有重现该问题。实体框架执行批量插入时,哪些数据库\表设置可以影响死锁?或者可能是其他地方的问题?
答案 0 :(得分:1)
根据你的评论:
TableB没有在问题所在的数据库中设置primaryKey 再现