0

だから私はこの役割を使用します:

DropCreateDatabaseIfModelChanges

しかし、データを保存するテーブルが1つあります..では、1つのテーブルを除外する方法、または1つのテーブルデータを保存する方法はありますか?

4

2 に答える 2

0

データベース全体を削除するのではありません(これがこれらの役割の役割です)。保持したいテーブルを除くすべてのテーブルに対してDROPクエリを明示的に実行する独自のロールを作成できると想像できます。

于 2012-05-24T07:44:44.207 に答える
0

いいえ、テーブルを除外する方法はありません。名前が示すように、データベース全体が削除されるためです。

ただし、イニシャライザーから継承し、シードメソッドをオーバーライドしてデータを再挿入することができます。

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
    protected override void Seed(MyContext context)
    {
        //insert data to tables through context
    }
}

より複雑なものが必要な場合はIDatabaseInitializer<TContext>、次のように直接実装する必要があります。

public class MyComplexInitializer : IDatabaseInitializer<MyContext>
{ 
    public void InitializeDatabase(MyContext context)
    {
        if (context.Database.Exists())
        {
             if (context.Database.CompatibleWithModel(true))
                 return;
             //do something bofore delete
             context.Database.Delete();
        }
        context.Database.Create();
        //add some data to context
        context.SaveChanges();                 
    }
}
于 2012-05-24T07:44:56.320 に答える