48

この投稿で説明されているように、EntityFrameworkのデータ移行を使用しようとしています。

ただし、Enable-Migrations手順を実行しようとすると、パッケージマネージャーコンソールで次のエラーが発生します。

The target context 'MyDataContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory

IDbContextFactoryそのため、クラスを含むプロジェクトに実装するファクトリクラスを作成しましたDbContextが、データ移行でそれを認識していないようです。

このファクトリクラスを使用するようにデータ移行を指示するために明示的に行う必要があることはありますか?

4

2 に答える 2

65

また、接続文字列名を取得するためにコンテキストを記述したときにこの問題が発生しました(その後、ninjectを使用してそれを提供しました)。

あなたが経験したプロセスは正しいようです。何か助けがあれば、これが私のクラス実装のスニペットです。

public class MigrationsContextFactory : IDbContextFactory<MyContext>
{
    public MyContext Create()
    {
        return new MyDBContext("connectionStringName");
    }
}

必要なのはそれだけです。

于 2012-07-31T20:21:58.823 に答える
1

@Sorenが指摘したように、IDbContextFactory以前のEF Coreリリース(つまりEF Core 2.1)ではサポートされていないを使用する代わりに、欠落しているConnectionStringパラメーターIDesignTimeDbContextFactory<TContext>をサポートするを実装できます。

参照されたインターフェースのいずれかで使用できるsettings.jsonベースのアプローチについては、 「 ConnectionStrings:DefaultConnection」値パスを定義できる@Araynのサンプルを確認してください。

アップデート1

@PaulWaldmanのコメントによると、EFCore5のサポートIDbContextFactory再導入されました。詳細については、以下の彼のコメントを確認してください。

于 2021-07-15T16:23:08.833 に答える