【问题标题】:Custom Execution Strategy Error in VS2017 and Entity framework Core 2.0VS2017 和实体框架 Core 2.0 中的自定义执行策略错误
【发布时间】:2017-09-09 19:32:33
【问题描述】:

我正在阅读“使用 Visual Studio 2017 构建 Web 应用程序”(Philip Japikse、Kevin Grossnicklaus 和 Ben Dewey 撰写),但我遇到了困难。尝试使用 Entity Framework Core 为自定义执行策略创建类时,出现错误 CR0246“找不到类型或命名空间名称 '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 context”而不是“ExecutionStrategyContext context”,但我认为这不是我想要的,我仍然收到错误,因为我的第一个参数是 context。任何帮助表示赞赏!谢谢!

【问题讨论】:

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


    【解决方案1】:

    我无法提供文档链接,因为此时相关的 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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      相关资源
      最近更新 更多