微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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方式一样.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐