Grow up

生活とプログラミング

Setup DB First EntityFrameworkCore SQL Server

f:id:knkomko:20201220181736p:plain

はじめに

.Net Core で EntityFramework を使う際に .NET Standard と違って試行錯誤したのでDBファーストで使用した手順をまとめます。

対象のフレームワーク

今回は.NET Core 3.1を使用しました。
f:id:knkomko:20201220173109p:plain

開発者用 PowerShell

コマンドは全て開発者用PowerShellから実行します。

カレントディレクトリはプロジェクトルートです。

PS C:\develop\WebApplication1\WebApplication1> dir


    ディレクトリ: C:\develop\WebApplication1\WebApplication1


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/12/20     17:30                bin
d-----       2020/12/20     17:30                obj
d-----       2020/12/20     17:29                Properties
-a----       2020/12/20     17:29            162 appsettings.Development.json
-a----       2020/12/20     17:29            192 appsettings.json
-a----       2020/12/20     17:30            723 Program.cs
-a----       2020/12/20     17:30           1295 Startup.cs
-a----       2020/12/20     17:29            148 WebApplication1.csproj
dotnet ef ツールのインストール

.NET Core 3.0 以降は .NET SDKdotnet ef ツールが含まれていないため
初めて使用する場合はインストールが必要です。

dotnet tool update --global dotnet-ef
Microsoft.EntityFrameworkCore.Design の追加

スキャフォールディングに必要な Design パッケージを追加します。

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer の追加

スキャフォールディングに必要なデータベースプロバイダーを追加します。

dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Models フォルダの作成

コードを保存する Models フォルダを作成します。
f:id:knkomko:20201220180522p:plain

スキャフォールディング

データベースから DBContext と Entity のコードを Models フォルダに作成します。

dotnet ef dbcontext scaffold "Server=[ホスト名];Database=[データベース名];persist security info=True;user id=[ユーザーID];password=[パスワード];MultipleActiveResultSets=True" Microsoft.EntityFrameworkCore.SqlServer -o Models
確認

EntityFrameworkCoreを使用してデータベースからコードが作成できました。

f:id:knkomko:20201220180806p:plain

参考資料

docs.microsoft.com