ef-code-first アプリケーションを code-first-migrations モデルに移行し、データベース初期化子を からDropCreateDatabaseIfModelChangesに切り替えていますMigrateDatabaseToLatestVersion。
元の初期化子では、いくつかのユーザー定義関数などを作成し、データベース構成を変更していました (例: SET AUTO_CLOSE OFF)。EF ではサポートされていないため、SQL を DB に対して直接実行することで、これらすべてを実現しました。
移行モデルに移ったので、生成されたクラスのUpメソッドにコードを追加することで、ほとんど同じことをしようとしています。DbMigrationこのコードは、Sqlメソッドを使用して SQL を挿入します。
ただし、結果として次のようなさまざまなエラーが発生します。
ユーザー定義関数を作成するための SQL により、
CREATE FUNCTIONステートメントがバッチの開始時にある必要があるというエラーが発生します。ステートメント
ALTER DATABASEを実行すると、ユーザー トランザクション内では使用できないというエラーが発生します。(私はトランザクションを作成しませんが、おそらく既に開始されているトランザクションがあります)。
どうすればこれを克服できますか?派生クラスでは、DbMigrationDbContext にアクセスできないようで、データベースに直接アクセスできません。