我正在阅读“使用 Visual Studio 2017 构建 Web 应用程序”(作者 Philip Japikse、Kevin Grossnicklaus 和 Ben Dewey),但卡住了。尝试使用 Entity Framework Core 为客户执行策略创建类时,出现错误 CR0246“找不到类型或 namespace 名称‘ExecutionStrategyContext’(是否缺少 using 指令或程序集引用?)”
文本仅声明只有 System 和 Microsoft.EntityFrameworkCore.Storage 是必需的引用。 EF Core 2.0 文档似乎与文本匹配,但我无法让错误消失。
注意:本书使用 Core 和 EF 1.1,而我使用的是 2.0。但是我在任何文档中都没有看到任何暗示这是问题所在的内容。该类是:
using System;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.EntityFrameworkCore;
namespace SpyStore.DAL.EF
{
public class MyExecutionStrategy : ExecutionStrategy
{
public MyExecutionStrategy(ExecutionStrategyContext context) :
base(context, ExecutionStrategy.DefaultMaxRetryCount, ExecutionStrategy.DefaultMaxDelay)
{
}
public MyExecutionStrategy(ExecutionStrategyContext context, int maxRetryCount, TimeSpan maxRetryDelay) :
base(context, maxRetryCount, maxRetryDelay)
{
}
protected override bool ShouldRetryOn(Exception exception)
{
return true;
}
}
}
VS2017 将 ExecutionStrategyContext 的两个实例突出显示为问题。我已经尝试将它们更改为仅“ExecutionStrategy 上下文”而不是“ExecutionStrategyContext 上下文”,但我认为这不是我想要的,但我仍然收到错误消息,因为我的第一个参数是上下文。任何帮助表示赞赏!谢谢!
最佳答案
我无法提供文档链接,因为此时相关的 EF Core API 文档尚未更新,但在 v2.0 中,ExecutionStrategyContext
类已替换为 ExecutionStrategyDependencies
和 ExecutionStrategy
类现在具有以下构造函数:
protected ExecutionStrategy(DbContext context, int maxRetryCount, TimeSpan maxRetryDelay);
protected ExecutionStrategy(ExecutionStrategyDependencies dependencies, int maxRetryCount, TimeSpan maxRetryDelay);
据此,更新后的样本应该是这样的:
public class MyExecutionStrategy : ExecutionStrategy
{
public MyExecutionStrategy(DbContext context) :
this(context, DefaultMaxRetryCount, DefaultMaxDelay)
{
}
public MyExecutionStrategy(DbContext context, int maxRetryCount, TimeSpan maxRetryDelay) :
base(context, maxRetryCount, maxRetryDelay)
{
}
public MyExecutionStrategy(ExecutionStrategyDependencies dependencies) :
this(dependencies, DefaultMaxRetryCount, DefaultMaxDelay)
{
}
public MyExecutionStrategy(ExecutionStrategyDependencies dependencies, int maxRetryCount, TimeSpan maxRetryDelay) :
base(dependencies, maxRetryCount, maxRetryDelay)
{
}
protected override bool ShouldRetryOn(Exception exception)
{
return true;
}
}
关于c# - VS2017和Entity framework Core 2.0中自定义执行策略报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46134397/