下面是我的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文件的行。还是不管用。我刷新了应用程序池和站点,可能是缓存的文件。但还是不走运。你能告诉我,一旦创建了一个数据库,我如何禁用整个初始化器文件,这样它无论如何都不会去删除db并创建一个新的。鳕鱼
发布于 2015-11-23 12:39:35
您可以使用另一个初始化器:
CreateDatabaseIfNotExists:这是默认的初始化器。顾名思义,如果按照配置不存在数据库,它将创建数据库。但是,如果更改模型类,然后使用此初始值设定项运行应用程序,则会抛出异常
在使用不同的模型部署新版本之前,您唯一需要做的就是自己删除数据库。(如果这是您想要做的)。
https://stackoverflow.com/questions/33865033
复制