2017-08-22 5 views
0

ASP.NETボイラープレートのシード中にSQLコマンドを実行するにはどうすればよいですか?ASP.NETボイラープレートのシードにストアドプロシージャを作成します

複雑なクエリを実行する必要があるので、ストアドプロシージャを使用してSQL Serverにコンピューティングをオフロードする方が簡単になると思います。

ActiveTransactionProviderを注入し、DbContextのADO.NETを使用してクエリを実行するカスタムリポジトリを作成しました。

ここで、ストアドプロシージャが存在するかどうかをチェックし、バックエンドが起動したときにそのプロシージャをシードに作成しないかどうかを確認します。

私はDbContextからADO.NETを使用しようとしたがSeedHelperを通過したが、私はトランザクションスコープは、ヘルパーに抑制さに設定されているにもかかわらず、トランザクションを必要とする例外を取得します。シード中にアクティブなトランザクションプロバイダをどこに注入できるのか分かりません。

答えて

1

データベースのスキーマ(SPの作成を含む)を変更するには、コードを最初に移行する必要があります。 add-migrationコマンドを使用して、その中でSQLを実行します(Code First Migrations and Stored Proceduresなど)。

シードは、既存のエンティティを追加/更新するためのものです。アプリケーションの起動時に実行されます。 EFコアにはまだネイティブシードメカニズムがありません(私が知っているように)。

関連する問題