Entity Framework Coreは.NET Entity Frameworkのdotnet core版。
必要パッケージ
- Microsoft.EntityFrameworkCore
- 各DBのEntityFrameworkプロバイダ
- Microsoft.EntityFrameworkCore.Design
- 各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毎のソースが作成される。