2

「Visual Studio 2017でWebアプリケーションをビルドする」(Philip Japikse、Kevin Grossnicklaus、Ben Dewey)が読んでいます。 Entity Frameworkコアを使用してカスタネット実行戦略のクラスを作成しようとすると、エラーCR0246が発生します。「型または名前空間の名前 'ExecutionStrategyContext'が見つかりませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?)」VS2017とEntity Frameworkコア2.0のカスタム実行戦略エラー

テキストには、SystemとMicrosoft.EntityFrameworkCore.Storageのみが必要な参照であることのみが記載されています。 EF Core 2.0のドキュメントはテキストと一致しているようですが、エラーが出ることはありません。

注:私は2.0を使用しています一方、本はCoreおよびEF 1.1を使用しています。しかし、私は、これが問題であることを示唆する文書には何も見ません。クラスは次のとおりです。

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'の代わりに 'ExecutionStrategy context'に変更しようとしましたが、これは私が望んでいるとは思わないし、私の最初のパラメータはcontextなので、まだエラーが出ます。どんな助けもありがとう!ありがとう!

答えて

3

関連するEFコア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; 
    } 
} 
+0

働いていました!本当にありがとう! –

関連する問題