以下是我的DbContext中创建数据和种子数据的代码的一部分。
public class labSchedulerDbContext :DbContext
{
static abDbContext()
{
Database.SetInitializer(new abDatabaseInitializer());
}
public abDbContext() :base (nameOrConnectionString:"abDbContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
其余代码只是声明模型。
在我的setinitializer类中使用种子
public class abDatabaseInitializer : DropCreateDatabaseIfModelChanges<abDbContext>
{
.....
}
代码工作正常。我遇到的问题是我在IIS中创建站点并运行它。它运行正常但几小时后它将删除数据库并再次初始化和播种数据。因此我们失去了添加的数据。我试图注释掉调用setinitilizer文件的行。仍然没有奏效。我刷新了apppool和网站,也许它是缓存文件。但仍然没有运气。 您能否告诉我如何在创建数据库后禁用整个初始化程序文件,这样无论它不进行什么操作都会丢弃db并创建一个新数据库。 鳕鱼
答案 0 :(得分:2)
您可以使用其他初始化程序:
CreateDatabaseIfNotExists:这是默认初始值设定项。顾名思义,如果根据配置不存在,它将创建数据库。但是,如果更改模型类,然后使用此初始化程序运行应用程序,则会抛出异常
您唯一需要做的就是在部署具有不同模型的新版本之前自行删除数据库。 (只要你想做什么)。