Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Entity Framework 6在具有相同上下文的多个插入上发生死锁_C#_Entity Framework_Wcf - Fatal编程技术网

C# Entity Framework 6在具有相同上下文的多个插入上发生死锁

C# Entity Framework 6在具有相同上下文的多个插入上发生死锁,c#,entity-framework,wcf,C#,Entity Framework,Wcf,我在我的WCF服务中做了三次插入。其中两个在另一个库[类库项目]中,最后一个在服务本身中。我对所有3个插入使用相同的上下文,以便在第3个插入失败时回滚所有3个插入 My DBContext是基于unity和依赖项注入设置的: [Microsoft.Practices.Unity.Dependency, RegisterDependency(typeof(EmployeeEntities))] public EmployeeEntities EmployeeDb { get; set; } 下面

我在我的WCF服务中做了三次插入。其中两个在另一个库[类库项目]中,最后一个在服务本身中。我对所有3个插入使用相同的上下文,以便在第3个插入失败时回滚所有3个插入

My DBContext是基于unity和依赖项注入设置的:

[Microsoft.Practices.Unity.Dependency, RegisterDependency(typeof(EmployeeEntities))]
public EmployeeEntities EmployeeDb { get; set; }
下面是我执行插入的代码的样子

using (TransactionScope tr = new TransactionScope(TransactionScopeOption.Required,new TransactionOptions{IsolationLevel=System.Transactions.IsolationLevel.ReadUncommitted}))
            {
            using (DbContextTransaction dbTransaction = EmployoeeDb.Database.BeginTransaction()) 
library.insertOne(EmployeeDb)
library.insertTwo(EmployeeDb)
EmployeeDb.Add(something); EmployeeDb.SaveChanges()
现在,如果我按顺序呼叫我的服务,一切正常。然而,当我模拟负载测试,引入一些并发调用时,服务开始失败

以下是我在跟踪上看到的错误:更新实体时出错。有关详细信息,请参见内部异常: 事务ProcessId 128在另一个进程的锁资源上被死锁,并被选为死锁牺牲品。重新运行事务

补充一个要点。我在类库中进行一些选择,以与现有数据进行比较。我猜这些选择要花很多时间。我的库中没有取消限制transactionscope Read。我只是传递上下文,用它进行选择和插入

大宗报价