我正在阅读"使用Visual Studio 2017构建Web应用程序" (Philip Japikse,Kevin Grossnicklaus和Ben Dewey),我被困住了。当尝试使用Entity Framework Core为自定义执行策略创建一个类时,我得到错误CR0246"类型或命名空间名称' ExecutionStrategyContext'找不到(你错过了使用指令或汇编引用吗?)"
该文本仅指出只有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的两个实例。我已经尝试将它们更改为“执行战略”背景'而不是' ExecutionStrategyContext context'但我不认为这是我想要的,我仍然会收到错误,因为我的第一个参数是上下文。任何帮助表示赞赏!谢谢!
答案 0 :(得分:6)
我无法提供文档链接,因为此时相关的EF Core API文档尚未更新,但在v2.0中,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;
}
}
据此,更新的样本应该是这样的:
{{1}}