[C#]EntityFrameworkでViewをMigration時に作る

C#

SqlServerにEntityFrameworkでViewを作る必要が出てきたのですが、
パッと分からなかったのでいろいろ調べてみました。

EntityFrameworkではマイグレーションファイルを作るコマンドを実行すると、Migrationsフォルダ配下にマイグレーション用のファイルが作られます。

Microsoft.EntityFrameworkCore.Migrations.Migrationを継承したクラスが
自動生成されたマイグレーションファイルに書いてあります。
その中のUpメソッドの配下に下記のように書くとView(ビュー)が作れることが確認できました。

テーブル作成時のUpメソッドに追記

Microsoft.EntityFrameworkCore.Migration.MigrationBuilderのSqlメソッドを使うと、
マイグレーション時に実行される生SQLが書けるようです。

migrationBuilder.Sql(@"
    CREATE VIEW view_hoge AS
        SELECT
・・・SQL省略・・・
");

テーブル削除時のDropメソッドに追記

dotnet ef database drop でデータベースを削除する時に動く
DropメソッドにもViewが削除されるように書いておきました。

migrationBuilder.Sql("DROP VIEW view_hoge");

SQL直で書けるので、ストアドプロシージャとかもかけそうですね。

コメント

タイトルとURLをコピーしました