だから私はこの役割を使用します:
DropCreateDatabaseIfModelChanges
しかし、データを保存するテーブルが1つあります..では、1つのテーブルを除外する方法、または1つのテーブルデータを保存する方法はありますか?
だから私はこの役割を使用します:
DropCreateDatabaseIfModelChanges
しかし、データを保存するテーブルが1つあります..では、1つのテーブルを除外する方法、または1つのテーブルデータを保存する方法はありますか?
データベース全体を削除するのではありません(これがこれらの役割の役割です)。保持したいテーブルを除くすべてのテーブルに対してDROPクエリを明示的に実行する独自のロールを作成できると想像できます。
いいえ、テーブルを除外する方法はありません。名前が示すように、データベース全体が削除されるためです。
ただし、イニシャライザーから継承し、シードメソッドをオーバーライドしてデータを再挿入することができます。
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();
}
}