Database.SqlQuery线程安全

时间:2013-12-23 21:44:43

标签: c# multithreading entity-framework-5

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

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

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

我的目标是在次要发布期间过时 - 如果需要,我们将有机会正确实施同步。

1 个答案:

答案 0 :(得分:1)

由于ADO.NET使用connection pooling并且创建新的DbContext相对较轻,因此您可以安全地创建大量可在使用后处理的上下文。

所以我会考虑在使用块中创建一个新的DbContext,而不是使用字段/属性。

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