所以我使用这个角色:
DropCreateDatabaseIfModelChanges
但是有一个表我要保存它的数据.. 那么有没有办法排除一个表或保留一个表数据?
答案 0 :(得分:0)
不是删除整个数据库(这就是那些角色所做的)。我可以想象你可以创建自己的角色,显式执行除你想要保留的表之外的所有表的DROP查询。
答案 1 :(得分: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();
}
}