【发布时间】:2018-11-02 18:09:12
【问题描述】:
我收到此错误,但我无法解决:
System.Data.SqlClient.SqlException: '无法执行事务操作,因为有待处理的请求正在处理此事务。'
发生的情况是,通常的数据操作正在作为控制器操作的一部分进行。
同时,有一个正在运行的过滤器将操作记录到数据库中。
this._orderEntryContext.ServerLog.Add(serverLog);
return this._orderEntryContext.SaveChanges() > 0;
这是发生错误的地方。
所以在我看来,有两个 SaveChanges 同时进行,所以交易被搞砸了。
不知道如何解决。他们都使用通过 DI 获得的相同上下文。一种解决方法是手动创建第二个上下文,但我宁愿坚持 DI 模式。但我不知道如何在 DI 中创建第二个 Db 上下文,或者即使这是个好主意。
也许我应该在两个调用中都使用 SaveChangesAsync() 以确保它们不会互相踩踏?
【问题讨论】:
标签: entity-framework entity-framework-core