1

コードファーストパラダイムを使用して作成した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; }

}
4

1 に答える 1

1

コードの最初の移行と、データベースのアップグレードが初期化子でサポートされているEF4.3ベータ版MigrateDatabaseToLatestVersionを確認してください。これをサポートするRTMバージョンはまだありません。

于 2012-01-20T13:00:51.877 に答える