EntityFrameworkCore にて、PostgreSQL のデータベースからエンティティモデルを生成する方法を説明していく。
(1) 動作環境
Microsoft Visual Studio Enterprise 2017 Version 15.8.7
PostgreSQL 10.3
(2) プロジェクト作成
プロジェクト名は、TestApp とした。
(3) 関連パッケージのインストール
「NuGet パッケージの管理」を開く。
最低でも以下のパッケージをインストールする。
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Npgsql.EntityFrameworkCore.PostgreSQL
インストール後、「ソリューション エクスプローラー」に、「プロジェクト」-「依存関係」-「NuGet」の配下に、インストールしたパッケージがあればOK。
※ インストール後に、Visual Studio を再起動しないと、モデル生成時に、うまく動作しないことがあった。
(4) エンティティモデルの生成
Models ディレクトリ作成
「ツール」 – 「NuGetパッケージマネージャー」 – 「パッケージマネージャーコンソール」を開く。
コンソール上で
1 |
cd TestApp |
で 移動し、
1 |
dir |
で Models ディレクトリがあることを確認する。
1 |
dotnet ef dbcontext scaffold "Host=<ホスト名>;Port=<ポート番号>;Database=<データベース名>;Username=<ユーザー名>;Password=<パスワード>" Npgsql.EntityFrameworkCore.PostgreSQL -o Models -d |
Models の下に Book というテーブルに対応するファイルが生成されていれば完了。
(5) オプション
オプションは以下のとおり。
特定のテーブルのみ出力したり、Context 名の指定もできる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
PM> dotnet ef dbcontext scaffold –help Usage: dotnet ef dbcontext scaffold [arguments] [options] Arguments: The connection string to the database. The provider to use. (E.g. Microsoft.EntityFrameworkCore.SqlServer) Options: -d|–data-annotations Use attributes to configure the model (where possible). If omitted, only the fluent API is used. -c|–context The name of the DbContext. –context-dir The directory to put DbContext file in. Paths are relative to the project directory. -f|–force Overwrite existing files. -o|–output-dir The directory to put files in. Paths are relative to the project directory. –schema … The schemas of tables to generate entity types for. -t|–table … The tables to generate entity types for. –use-database-names Use table and column names directly from the database. –json Show JSON output. -p|–project The project to use. -s|–startup-project The startup project to use. –framework The target framework. –configuration The configuration to use. –runtime The runtime to use. –msbuildprojectextensionspath The MSBuild project extensions path. Defaults to “obj”. –no-build Don’t build the project. Only use this when the build is up-to-date. -h|–help Show help information -v|–verbose Show verbose output. –no-color Don’t colorize output. –prefix-output Prefix output with level. PM> |
参考サイト
Getting Started with Entity Framework Core: Database-First Development
https://www.codeproject.com/Articles/1209903/Getting-Started-with-Entity-Framework-Core-Databas