数据库
首页 > 数据库> > c# – Database.SqlQuery线程安全

c# – Database.SqlQuery线程安全

作者:互联网

有没有人知道Database.SqlQuery是否会做一些让线程不安全的事情(比如创建或招募交易等)?

这是我必须从多个线程调用的代码段 – 查询非常简单,硬编码(无法访问共享用户代码数据):

public virtual long GetId(string sql)
{
    var newid = DbContext.Database.SqlQuery<long>(sql).First();
    return newid;
}

我的目标是在次要发布期间通过 – 然后我们将有机会在需要时正确实现同步.

解决方法:

由于ADO.NET使用connection pooling并且创建一个相对较轻的新DbContext,因此可以安全地创建许多可在使用它们之后处理的上下文.

所以我会考虑在using块中创建一个新的DbContext,而不是使用field / property.

要回答您的第一个问题,运行像您的问题中的代码之类的查询将只执行针对数据库的语句,就像您使用旧式ADO.NET方式一样.

标签:c,multithreading,entity-framework-5
来源: https://codeday.me/bug/20190708/1406787.html