作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有谁知道Database.SqlQuery在幕后做了一些会使其线程不安全的事情(比如创建或登记事务等)?
这是我必须从多个线程调用的一段代码 - 查询非常简单,硬编码(无法访问共享的用户代码数据):
public virtual long GetId(string sql)
{
var newid = DbContext.Database.SqlQuery<long>(sql).First();
return newid;
}
我的目标是在次要版本期间完成 - 然后我们将有机会在需要时正确实现同步。
最佳答案
由于 ADO.NET 使用 connection pooling并且创建一个新的 DbContext
是相对轻量级的,您可以安全地创建大量上下文,这些上下文可以在使用后进行处理。
所以我会考虑在 using block 中创建一个新的 DbContext
而不是使用字段/属性。
要回答您的第一个问题,运行类似于您问题中的代码的查询将只对数据库执行语句,就像您以老式的 ADO.NET 方式所做的那样。
关于c# - Database.SqlQuery 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751622/
我是一名优秀的程序员,十分优秀!