.Net Core 3.1 Entity Framework Core Database First する方法
まえがき
.NetCore 3.1でMySQLでEntityFrameworkでDBファーストしようと思ったら
公式っぽいMySql.Data.EntityFrameworkCoreが3.1に対応していないせいで苦労した
開発環境
動作環境はcent7で.NetCore3.1なのだが使用ツールの関係で2.1も必要になる。
解法(ポイント)
- Pomelo.EntityFrameworkCoreを使うこと
- DBを読んでモデルを生成するMicrosoft.EntityFrameworkCore.Tools.DotNet Version="2.0.3" が.NetCore 2.x を要求してくる(2.1で動いたから良しとした)
後日談 2020/12
.Net5のみで動くようになってた
インストール方法は https://docs.microsoft.com/ja-jp/ef/core/cli/dotnet
コマンドで dotnet ef を dotnet-ef にすればOK
必要ライブラリは dotnet add package ~~~~ というコマンドで入れるのが正攻法だが
面倒なのでcsprojを以下のようにすして dotnet restore すればよい
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.19" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
</ItemGroup>
</Project>
ライブラリの復元が完了したら以下のコマンドを実行すればDBモデルを生成してくれる
※接続情報は自分の環境に合わせること!
dotnet ef dbcontext scaffold "Server=localhost; Port=3306; Database=schema; Uid=root; Pwd=password;" Pomelo.EntityFrameworkCore.MySql -o Models --context Context
サンプルコード:github
Author And Source
この問題について(.Net Core 3.1 Entity Framework Core Database First する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/WaToI/items/2e73233130150b995fe9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .