#EntityFramework Coreで、DBからModelクラスを生成する
ASP.netで開発されている技術者の方は、Visual StudioのADO.NETを使って、モデルの生成をされているかと思います。
しかし.Net Coreの世代になるとマルチプラットフォームになるため便利なGUIのツールは用意されなくなりました。
もちろん出来なくなった訳ではなく、コマンドラインから実行することができます。
これからの主流は、.Net Coreになりますので、コマンドラインからのModel作成を調査してみました。
##テストプロジェクトの作成
ASP.Net Coreのプロジェクトを作成します。
##Packageの設定
下記の4つのパッケージをNuGetで登録します。
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.SqlServer.Design
- Microsoft.EntityFrameworkCore.Tools.DotNet
##csprojファイルに、定義を追加
csprojファイルにDotNetCilToolReferenceを追記します。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
</ItemGroup>
<ItemGroup>
<DotNetCilToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
</ItemGroup>
</Project>
##開発者コマンドの実行
開発者コマンド プロンプト for VS 2017を起動して、プロジェクトルートへ移動します。
###Model作成コマンド
dotnet ef dbcontext scaffold "Server=[サーバー];Database=[DB名];persist security info=True;user id=[ID];password=[PW];MultipleActiveResultSets=True" Microsoft.EntityFrameworkCore.SqlServer -o Models
###更新コマンド
-f オプションで、強制更新されるみたいです。
dotnet ef dbcontext scaffold "Server=[サーバー];Database=[DB名];persist security info=True;user id=[ID];password=[PW];MultipleActiveResultSets=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -f
##参考
EntityFramework Core Database First Approach (ASP.Net Core Part - 7)