コードファーストパラダイムを使用して作成したMVC3プロジェクトがあり、それは機能します。DBContextから継承するモデルを作成し、テーブルなどに書き込むことができます。新しいテーブルを追加してモデルを変更する必要がありますが DropCreateDatabaseIfModelChanges<T>
、EF4がドロップエンドで新しいDBを作成するため、すべてのデータが失われます。
public class MyDbInitializer : DropCreateDatabaseIfModelChanges< MyDb >
UpdateDatabaseIfModelChanges<T>
存在する場合のように別のインターフェースを使用できますか?
私のモデルは次のようになります。
[Table("Person")]
public class Person
{
public int ID { get; set; }
public string name { get; set; }
public string country { get; set; }
public string gender { get; set; }
}
public class MyDb: DbContext
{
public DbSet<Person> People { get; set; }
}
それから私は電話します:
Database.SetInitializer(new MyDbInitializer ());
public class MyDbInitializer : DropCreateDatabaseIfModelChanges< MyDb >
{
protected override void Seed(MyDb context)
そしてこれを作成したい:
[Table("Person")]
public class Person
{
public int ID { get; set; }
public string name { get; set; }
public string country { get; set; }
public string gender { get; set; }
}
[Table("NewTable")]
public class NewTable
{
public int ID { get; set; }
public string name { get; set; }
public string position { get; set; }
public string description { get; set; }
}
public class MyDb: DbContext
{
public DbSet<Person> People { get; set; }
public DbSet< NewTable > NewTable { get; set; }
}