如果重新安装应用程序,是否可以删除应用程序的数据库?
编辑: 每次安装新版本的应用程序时,客户端都希望“清除”数据库。 DropCreateDatabaseIfModelChanges不会删除它,因为他们可能会在没有模型更改的情况下安装/重新安装应用程序。
答案 0 :(得分:1)
如果使用某些安装程序(例如MSI),则需要在Update,Unistall或重新安装删除数据库的事件上添加自定义操作。
其他解决方案是将其添加到主代码中:
if (IsVersionChanged()) {
if (Database.Exists(...)) { Database.Drop(...); }
}
但它没有解决重新安装的情况(您可能会尝试通过分析在安装/重新安装时应始终覆盖的文件时间戳来检测此情况,但如果您没有安装/重新安装,则只能这样做安装程序)。
有几种方法可以实现IsVersionChanged。例如,您可以将版本保留在数据库本身中,也可以将最新版本保留在Windows注册表中。
答案 1 :(得分:0)
您可以将Database SetInitializer静态成员与所需参数一起使用。如果没有数据库,则为“创建”示例。
public class YourDbContext : DbContext
{
public YourDbContext (): base("yourConnectionString")
{
Database.SetInitializer<YourDbContext>(new CreateDatabaseIfNotExists<YourDbContext>());
}
}