Entity Framework Core

Entity Framework Coreは.NET Entity Frameworkのdotnet core版。

必要パッケージ

  1. Microsoft.EntityFrameworkCore
  2. 各DBのEntityFrameworkプロバイダ
  3. Microsoft.EntityFrameworkCore.Design
  4. 各DBのEntityFrameworkデザイナ

1,2は必須で、2は実際にデータベースにアクセスするためのドライバ。例えば、MS SQL Serverなら、Microsoft.EntityFrameworkCore.SqlServer,MySQLなら、Pomelo.EntityFrameworkCore.MySql(本家Oracleのドライバは実行時エラーが出た-もう、直ったかな?)等。

3,4はC#コードからデータベーステーブルをジェネレートするのに必要。

なお、Entity Framework関連のMigration等を行う場合、最初に下記コマンドを実行して、dotnet-efツールをインストールしておく必要がある。

dotnet tool install --global dotnet-ef

EntityやDbContext等の定義は.NET Framework版とほぼ同様だが、DBにアクセスするためのコードが必要。
通常はDbContextから派生させたクラスの、OnConfiguringメソッドをオーバーライドして
接続先などを設定する。

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.SqlServer;
・・・
    public class PersonDb : DbContext {
      ・・・
        protected override void OnConfiguring(DbContextOptionsBuilder builder) {
            builder
                .UseSqlServer(<接続文字列>);
        }
    }
}

上記は、MS SQL Serverに接続するための設定。
UseSqlServerの部分が拡張メソッドで、使用するプロバイダにより異なる。

DbContextとEntity定義のコードを作成して、下記コマンドを実行することにより、指定データベース上にテーブルが作成される。

dotnet ef migrations add <バージョン等分かりやすい名前>
dotnet ef database update

※データベースは作成しておく必要あり(?)

ちなみに、既存のテーブルから、DbContextとEntityコードを作成する事も可能。

dotnet ef dbcontext scaffold <接続文字列> <プロバイダ>
例)
dotnet ef dbcontext scaffold “Data Source=・・・” Microsoft.EntityFrameworkCore.SqlServer

上記によりDbContextを含んだソース,Entity毎のソースが作成される。

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。
カテゴリー: C#, dotnetcore, Entity Framework, 技術系 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください