c# - VS2017和Entity framework Core 2.0中自定义执行策略报错

标签 c# visual-studio entity-framework visual-studio-2017 entity-framework-core

我正在阅读“使用 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 类已替换为 ExecutionStrategyDependenciesExecutionStrategy 类现在具有以下构造函数:

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/

相关文章:

c# - 在 RadGrid 中的 GridTemplateColumn 中查找控件

asp.net - 何时在 WebForms 页面生命周期中实例化 DbContext?

c# - 模型类中的计算字段给出异常

sql-server - 随着时间的推移,如何将数据库部分迁移到新系统?

c# - 使用C#以编程方式调整网格中的行数

c# - 来自 MSDN 的推送通知 Windows Phone 8 示例

c# - 将对象转换为 C# 类

visual-studio - Visual Studio 部署到 SQL 数据仓库语法不正确,接近 'ANSI_NULLS'

c++ - 构建失败,Visual C++ 中出现 cstdio 和 cstdlib 错误

visual-studio - 在 Visual Studio 中隐藏 Ctrl+逗号(导航到)的属性?