Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Code first在IIIS中以Code first的形式不断删除和创建数据库_C#_.net_Entity Framework - Fatal编程技术网

C# EF Code first在IIIS中以Code first的形式不断删除和创建数据库

C# EF Code first在IIIS中以Code first的形式不断删除和创建数据库,c#,.net,entity-framework,C#,.net,Entity Framework,以下是my DbContext中创建数据和种子数据的部分代码 public class labSchedulerDbContext :DbContext { static abDbContext() { Database.SetInitializer(new abDatabaseInitializer()); } public abDbContext() :base

以下是my 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>();
        }
}
公共类labSchedulerDbContext:DbContext
{
静态abDbContext()
{
SetInitializer(新的abDatabaseInitializer());
}
public abDbContext():base(名称或连接字符串:“abDbContext”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
代码的其余部分只是声明模型

在我的setinitializer类中使用seed

public class abDatabaseInitializer : DropCreateDatabaseIfModelChanges<abDbContext>
{
.....

}
公共类abDatabaseInitializer:DropCreateDatabaseIfModelChanges
{
.....
}
代码运行良好。我的问题是当我在IIS中创建站点并运行它时。它运行正常,但几小时后它将删除数据库并再次初始化和种子数据。因此,我们丢失了添加的数据。我试图注释掉调用setinitilizer文件的行。还是不行。我刷新了apppool和站点,可能是缓存文件。但还是没有运气。 你能告诉我,一旦创建了一个数据库,我如何禁用整个初始化器文件,这样无论它做什么,都不会删除数据库并创建一个新的数据库。
Cod

您可以使用另一个初始值设定项:

:这是默认的初始值设定项。顾名思义,如果按照配置不存在数据库,它将创建数据库。但是,如果您更改模型类,然后使用此初始值设定项运行应用程序,那么它将引发异常


在部署具有不同模型的新版本之前,您必须自己删除数据库。(如果这是您想要做的)。

IMO,删除创建数据库的想法应该只在开发阶段,而不是在发布网站时,为了避免这种行为,您可以通过#if(DEBUG)database.SetInitializer(…)#endif,您想要的只是摆脱这个问题。您在调试这个应用程序时是否使用相同的连接字符串?只是想知道调试时是否意外使用了错误的连接字符串。