2012-01-20 3 views
1

私はコードファーストパラダイムを使って作成したMVC3プロジェクトを持っています。私はDBContextから継承するモデルを作成しました。テーブルとそのすべてに書き込むことができます。私は新しいテーブルを追加し、私のモデルを変更して使用する必要がありますDropCreateDatabaseIfModelChanges<T>しかし、私はすべてのデータを失う、EF4のために新しいDBを作成終了します。データを失うことなくEF4コンテキストにテーブル(データモデルを変更する)を追加する方法

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; } 

} 
+0

「実行時」と「動的」とはどういう意味ですか?あなたの質問はあなたの質問のタイトルから期待されるどんな詳細も提供しません。私が質問に見るのは、再コンパイルが必要な新しいクラスを追加したため、次回にアプリケーションを実行するときにデータベースの更新が必要であるという静的な更新です。 –

+0

データベースを削除せずにデータベースモデルを変更するか、古いデータを新しいデータベースにコピーする必要があります。 –

答えて

1

コード最初の移行とEF 4.3 betaデータベースをチェックアップグレードはMigrateDatabaseToLatestVersionイニシャライザでサポートされています。これをサポートするRTMバージョンはありません。

+0

すぐにお返事ありがとうございます、明日、あなたのリンクを処理します。 –

関連する問題