0

所以我使用这个角色:

DropCreateDatabaseIfModelChanges

但是我有一个表来保存它的数据。那么有没有办法排除一个表或保留一个表数据?

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 回答