- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:问题是我正在评估在构造函数中使用哪种执行策略,而不是将其留在 lambda 中。换句话说,我在 MyConfiguration 的构造函数中包含了这个...
var strategy = SuspendExecutionStrategy
? (IDbExecutionStrategy)new DefaultExecutionStrategy()
: new SqlAzureExecutionStrategy());
this.SetExecutionStrategy("System.Data.SqlClient", () => strategy);
而不是在 lambda 内进行评估。
原始问题:Entity Framework 6.0 中是否有任何方法可以让 DbContext 上的某些查询使用一种执行策略,而其他查询则使用不同的执行策略?我在 Microsoft's documentation 中看到以下示例.
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
this.SetExecutionStrategy("System.Data.SqlClient", () => SuspendExecutionStrategy
? (IDbExecutionStrategy)new DefaultExecutionStrategy()
: new SqlAzureExecutionStrategy());
}
public static bool SuspendExecutionStrategy
{
get
{
return (bool?)CallContext.LogicalGetData("SuspendExecutionStrategy") false;
}
set
{
CallContext.LogicalSetData("SuspendExecutionStrategy", value);
}
}
}
不幸的是,在我的测试中,如果我创建 DbContext 类的多个实例,则只有一次对 DbConfiguration 的构造函数的调用,该单例配置对象得到在上下文对象之间共享。因此,虽然我可以在启动时使用 SuspendExecutionStrategy 设置此值,但我无法在运行时更改它。我想稍后调用 SetExecutionStrategy() 可能会改变它,但我有多个线程,并且希望一些线程使用一个 DbExecutionStrategy 而其他线程使用不同的线程(特别是对于可重试查询与不可重试查询)。
是否有一些设置可以将DbConfiguration更改为不是该类的单例,而是特定于DbContext的特定实例?或者我完全误解了什么?
理想情况下,我希望能够做一些类似的事情......
using(var repo = new MyDbContext()){
repo.SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
// do some queries to my repository
}
在一个线程中,然后在另一个线程中,有
using(var repo = new MyDbContext()){
repo.SetExecutionStrategy("System.Data.SqlClient", () => (IDbExecutionStrategy)new DefaultExecutionStrategy());
// do some queries to my repository
}
最佳答案
问题是我正在评估在构造函数中使用哪种执行策略,而不是将其留在 lambda 中。换句话说,我在 MyConfiguration 的构造函数中包含了这个...
var strategy = SuspendExecutionStrategy
? (IDbExecutionStrategy)new DefaultExecutionStrategy()
: new SqlAzureExecutionStrategy());
this.SetExecutionStrategy("System.Data.SqlClient", () => strategy);
而不是在 lambda 内进行评估。这是一个微妙的差异,但在实际评估时(构建与使用时)它会发生变化。
关于c# - EF6 中是否可以使用特定于查询的 DbExecutionStrategies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53212962/
更新:问题是我正在评估在构造函数中使用哪种执行策略,而不是将其留在 lambda 中。换句话说,我在 MyConfiguration 的构造函数中包含了这个... var strategy = Sus
我最初的问题是我在更新 SQL 数据库时经常遇到死锁。通过一点点研究,我发现我能够定义一个自定义 DbConfiguration 和一个 DbExecutionStrategy,它指示 Entity
我使用 DbExecutionStrategy 使我的程序在查询服务器时支持连接超时,但它没有按预期工作。 这是我的类(class): public class MyExecutionStrategy
我是一名优秀的程序员,十分优秀!