所以我使用这个角色:
DropCreateDatabaseIfModelChanges
但是我有一个表来保存它的数据。那么有没有办法排除一个表或保留一个表数据?
所以我使用这个角色:
DropCreateDatabaseIfModelChanges
但是我有一个表来保存它的数据。那么有没有办法排除一个表或保留一个表数据?
不是通过删除整个数据库(这些角色就是这样做的)。我可以想象您可以创建自己的角色,为所有表显式执行 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();
}
}