trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

EntityFrameworkメモ

目標:EntityFramework使ってるソフトを引き継いだので、ソース見て検索しながら理解できれば良い程度。

なのでざっくり。

 

下記ホームページで目標達成できる。

だいたいの使い方

Entity Framework カテゴリーの記事一覧 - インクリメンタルなカイハツにっき

もうちょっと詳細まで

EntityFramework 目次:Gushwell's Dev Notes

自動Migrationについて

Entity Framework で自動マイグレーション : @jsakamoto

 

以下メモ(詳細は上記ホームページで)

概要

・データ操作(DB操作含む)するときに使うと便利

・テーブルとクラスをマッピング 

・接続するDBはコンフィグファイル(App.configとかWeb.config)の<connectionStrings>で指定。

・プロパティ名を合わせれば主キー、外部キーの設定を自動でよしなにやってくれる。(外部キーの場合ナビゲーションプロパティが必要)

 プロパティ名を合わせない場合アノテーションを使って指定。

  ・ナビゲーションプロパティを使って関連するテーブルのデータにもアクセスできる(LINQを使ってデータにアクセスするとき便利)

・クエリは作成した時点では発行されない。評価するときに発行される。

 速度や通信量が気になる場合いつどんなクエリが発行されているか確認が必要。

 DbContext.Database.LogにActionを設定してやれば確認できる

・関連のある行を削除する場合注意(書き方によっては関連が外れるだけ?)

 

マイグレーション

・クラスのプロパティを変更すればDBに反映される(マイグレーション必要)

マイグレーション。手動・自動に関わらず

 1.ツール→Nugetパッケージマネージャー→パッケージマネージャーコンソールからEnable-Migrations←最初の設定。これでプロジェクトにMigrationsフォルダ、Configurationファイルができる

 手動の場合

 2.プロパティ修正

 3.Add-Migration 名称←これでMigrationファイルが作られる

 4.Update-Database←実際にDBを更新

 自動の場合

 2'.Configuration()で自動マイグレーション許可の設定をする

 3'.開始時に実行されるとこにDatabase.SetInitializer

 あとは自動でやってくれる。

※手動だとAdd-Migrationで変更履歴が残るので特定の状態に戻すのが楽