C# EF核心:SaveChangesSync、MARS和;不允许新事务,因为会话中正在运行其他线程;

C# EF核心:SaveChangesSync、MARS和;不允许新事务,因为会话中正在运行其他线程;,c#,sql-server,entity-framework-core,ef-core-2.0,C#,Sql Server,Entity Framework Core,Ef Core 2.0,我有一个在SQL Server 2017后端使用EF Core 2.0的Web API 我最近注意到,我们从未在连接字符串中启用多个活动结果集(MARS)。所以我打开它,希望能有更好的表现 起初,一切似乎都很好。但是,很快,我们对dbContext.savechangessync()的调用开始失败,并显示消息“由于会话中有其他线程在运行,因此不允许新事务” 通常,当有人试图在循环中保存更改时,会出现此消息。我没有这样做-失败的API调用将单个项插入数据库,保存更改并返回 我检查了所有的async

我有一个在SQL Server 2017后端使用EF Core 2.0的Web API

我最近注意到,我们从未在连接字符串中启用多个活动结果集(MARS)。所以我打开它,希望能有更好的表现

起初,一切似乎都很好。但是,很快,我们对
dbContext.savechangessync()
的调用开始失败,并显示消息“由于会话中有其他线程在运行,因此不允许新事务”

通常,当有人试图在循环中保存更改时,会出现此消息。我没有这样做-失败的API调用将单个项插入数据库,保存更改并返回

我检查了所有的
async
都被正确地
等待
。我尝试将显式的
Wait()
调用添加到我的
savechangesync
。什么都没用


我关掉了火星,一切又恢复了。有人知道这是什么原因吗?

告诉我们导致问题的代码,您是如何保存项目的?一个
savechangesync
async被启用,它可能存在于循环之外。如果不显示代码,我们就无法确定问题。使用
多个活动结果
,而不清楚打开了多少连接,这是非常糟糕的。默认情况下,我认为您可以有100个,如果您在连接字符串中指定它,您也可以有更多。请发布一个。