--- lang: ja-jp breaks: true --- # Entity Framework Core (EF Core) の基本 2021-09-06 ## ツールのインストール ```shell= dotnet tool install --global dotnet-ef ``` ## ツールの更新 ```shell= dotnet tool update --global dotnet-ef ``` ## バージョン確認 ```shell= dotnet ef --version Entity Framework Core .NET Command-line Tools 5.0.9 ``` ## `dotnet ef` コマンドで `No project was found. Change the current working directory or use the --project option.` とエラーが表示される場合の対応 カレントディレクトリが確実にプロジェクトディレクトリとなっていることを確認する。 ## データベースを削除 ```shell= dotnet ef database drop ``` ## 初期移行を作成する 以下の操作により、`Migrations`フォルダが生成される。 ```shell= dotnet ef migrations add InitialCreate ``` ## Up および Down メソッドを確認する migrations add コマンドを実行したときに、EF では最初からデータベースを作成するコードが生成されています。 このコードは、`Migrations` フォルダー内の `<timestamp>_InitialCreate.cs` という名前のファイルとなります。 InitialCreate クラスの Up メソッドでは、データ モデルのエンティティ セットに対応するデータベース テーブルを作成し、Down メソッドでは、それらを削除します。 ## 移行を適用する ```shell= dotnet ef database update ``` ## EF Core の NuGet パッケージ ```shell= Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Relational ``` `ASP.NET Core`で使用する場合は、以下となる。 ```shell= Install-Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer ``` #### 特定のプロジェクトでツールを使用するには、`Microsoft.EntityFrameworkCore.Design`パッケージをインストールする ## サンプル AspNetCore.Docs/aspnetcore/data/ef-mvc/intro/samples/ > チュートリアル: ASP.NET MVC Web アプリでの EF Core の概要 > https://docs.microsoft.com/ja-jp/aspnet/core/data/ef-mvc/intro ## Entity Framework Core の SQL ログ 一般的に、ログの構成は appsettings.{Environment} .json ファイルの Logging セクションで指定されます。 SQL ステートメントをログに記録するには、appsettings.Development.json ファイルに "Microsoft.EntityFrameworkCore.Database.Command": "Information" を追加します。 ```json= { ・・・ "Logging": { "LogLevel": { ・・・ "Microsoft.EntityFrameworkCore.Database.Command": "Information" ・・・ } }, ・・・ } ``` ## データベース例外フィルターを追加する ```csharp= public void ConfigureServices(IServiceCollection services) { services.AddDbContext<SchoolContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddDatabaseDeveloperPageExceptionFilter(); services.AddControllersWithViews(); } ``` ## データベース例外が発生した際に、マイグレーションボタンを表示する。 ```csharp= public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseMigrationsEndPoint(); } ・・・ ``` ![](https://i.imgur.com/xwMw3Ff.png) ###### tags: `Entity Framework Core` `基礎` `EF Core`