MySql.Data.MySqlClient.MySqlException:已经有一个与此Connection关联的打开DataReader,必须先关闭

时间:2018-04-04 13:23:33

标签: c# mysql entity-framework linq

我们遇到了mysql,实体框架6.0和存储库模式的问题。 这是我们尝试与多个用户同时添加实体时发生的错误。 我们不使用IQueryable返回类型(如其他主题中所建议的那样)。 这是返回错误的代码:

using (var dbContextTransaction = rep.Context.Database.BeginTransaction())
{
try
{
    rep.Add(newSchedule);
    rep.Save();

    dbContextTransaction.Commit();
}
catch (Exception ex)
{

    dbContextTransaction.Rollback();
    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}

}

使用和不使用数据库事务时触发错误。 堆栈跟踪指向调用此部分代码的函数。 有什么想法解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

EF上下文不是线程安全的,您需要为每个请求创建一个上下文。也许你可以注入工厂并询问背景。 或者在DI容器中将上下文设置为Transient。

希望这有帮助。