EntityFramework CodeFirstでのワークフロー

Nuget

PM> install-package EntityFramework

クラスを定義

public class Course {
    public int Id {get; set;}
    public string Title {get; set}
}

public class Professor {
    public int Id {get; set;}
    public IList<Course> {get; set;}
}

DBContextを定義

public class XContext : DBContext{
  public DBSet<Course> Courses {get; set;}
  public DBSet<Professor> Professors {get; set;}
  public XContext() : base("name=DefaultConnection"){}
}

App.configを編集

<connectionStrings>
  <add name = "DefaultConnection" connectionString="data source=.\SQLEXPRESS; intial catalog=CodeFirstDemo; integrated security=SSPI" providerName="System.Data.SqlClient"/>
</connectionStrings>

Initial Catalogはデータベース名, SSPIはWindows認証なので、パスワード認証は別途

connectionStringはVisualStudioのサーバーエクスプローラーでテスト接続後、そのプロパティを参照するとすぐわかる

マイグレーション

PM> enable-migrations

一度だけやればよい。

マイグレーション追加

PM> add-migration InitialModel

データベースアップデート

PM> update-database

これで実際にデータベースが現れる。SSMSで確認してみるとよい。

変更

コードを変更したら、再度マイグレーションを行う

PM> add-migration AddNameColumnToProfessor

強制するには-Force

migrationフォルダに作成されるのが変化ぶんなので

sql("UPDATE Professors SET Id = 1")

のような強制もここに書ける

最後に

PM> update-database

で、データベースに反映される

変更の上書き

migrationを強制上書きするには以下

PM> add-migration InitialModel -force