EF Core (Entiti Framework Core)¶
公式ドキュメント¶
参考メモ¶
インストール¶
1 2 3 4 5 6 7 8 | |
C#の型とデータベースの型を合わせる¶
[Column(TypeName = "decimal(8, 2)")]などを使う.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
大文字小文字の無視: SQLiteだけ?¶
EF.Functions.Collateを使う
1 2 3 4 5 6 7 8 | |
シードでidをGuidで発行する¶
- URL
Guid.NewGuid()を使う
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 | |
シードを使う¶
- 参考
- EF Core 6系, Seeding one-to-many relationships
- MainSample
Data/Configuration/HogeConfiguration.csにIEntityTYpeConfigurationを実装したクラスを作るConfigureで適切に生成するDbContext.csのOnModelCreatingでConfigurationを呼び出す- モデルで
public ICollection<City> Cities { get; set; }などをnew()していると怒られる模様
SportsStoreの場合¶
Models/SeedData.csなどを適切に作るProgram.csで読み込む
1 2 | |
シード: IdentityUser¶
- Seed Identity User and Role In ASP.Net Core with EF Core
- How to seed an Admin user in EF Core 2.1.0?
シード: 多対多¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
データベースのリセット¶
1 | |
認証¶
ASP.NET Core Identityを使う.
認証用ユーザーにリレーションを張る¶
- 参考記事
- 参考実装: 2023/01
- 次のようなモデルを作る.
ApplicationUser : IdentityUserがAspNetUsersテーブルになる.
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 | |
認証用ユーザーの主キーを変える¶
- URL
- 未検証
マイグレーションの作成¶
- ローカルインストールした
EF Coreを使う場合は次の通り.
1 2 | |
- コンテキストを指定したい場合は次の通り.
1 | |
EF Coreのツールをグローバルインストールしている場合は下記コマンド.
1 | |
マイグレーションの反映¶
1 | |
マイグレーションのundo¶
1 | |
リバースエンジニアリング・データベースファースト・スキャフォールド¶
- データベース側の準備一例
A5SQLを使って作ったER図doc/mydba5erからSQLを生成してdb/init/init.sqlに置く- SQLで
IDをIdに置換する - データベースを初期化:dockerを立ち上げれば自動的に初期化される
- 再作成したい場合は
docker compose downしてからdocker compose up --build
- 再作成したい場合は
TODO:接続文字列のセキュリティに関連してシークレットマネージャーツールを使うべしと怒られる- cf. スキャフォールドのオプション
- 公式
- 接続文字列・プロバイダーは適宜調べよう
SQLite:Microsoft.EntityFrameworkCore.SqlitePgSQL:Npgsql.EntityFrameworkCore.PostgreSQLMySQL:MySql.EntityFrameworkCore`MariaDB:Pomelo.EntityFrameworkCore.MySqlSQL Server:Microsoft.EntityFrameworkCore.SqlServer
1 2 3 4 5 | |