Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework 部署到Azure时未运行EF代码优先迁移_Entity Framework_Azure_Ef Code First_Entity Framework Migrations - Fatal编程技术网

Entity framework 部署到Azure时未运行EF代码优先迁移

Entity framework 部署到Azure时未运行EF代码优先迁移,entity-framework,azure,ef-code-first,entity-framework-migrations,Entity Framework,Azure,Ef Code First,Entity Framework Migrations,我使用代码优先迁移运行实体框架。我的新版本添加了一个表,修改了一些表,并运行了一些脚本。这在使用更新数据库进行本地开发时非常有效 部署时,未创建新表,并且我收到来自客户端的错误。我将调试器连接到已部署的站点以跟踪发生的情况。它到达控制器,通过正常流程,在对新表(但实际上还不存在)进行第一次数据库调用时,它跳转到配置类中进行迁移 internal sealed class Configuration : DbMigrationsConfiguration<myProject.api.Auth

我使用代码优先迁移运行实体框架。我的新版本添加了一个表,修改了一些表,并运行了一些脚本。这在使用更新数据库进行本地开发时非常有效

部署时,未创建新表,并且我收到来自客户端的错误。我将调试器连接到已部署的站点以跟踪发生的情况。它到达控制器,通过正常流程,在对新表(但实际上还不存在)进行第一次数据库调用时,它跳转到配置类中进行迁移

internal sealed class Configuration : DbMigrationsConfiguration<myProject.api.AuthContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        MigrationsDirectory = @"Migrations\Auth";
        ContextKey = "myProject.api.AuthContext";
    }
内部密封类配置:dbmigtorinsconfiguration
{
公共配置()
{
AutomaticMiggerationsEnabled=假;
MigrationsDirectory=@“Migrations\Auth”;
ContextKey=“myProject.api.AuthContext”;
}
所以我觉得很好,一切都应该很好。它经历了所有这些,返回到最初的数据库调用,但该调用返回一个错误,粘贴在下面

支持“AuthContext”上下文的模型自 创建数据库。请考虑使用代码第一次迁移进行更新。 数据库()

这是令人惊讶的,因为我确实启用了代码优先迁移!使用标准的enable migrations和add migration,当我发出update database命令时,它们在我的本地机器上非常有效

1) 部署到Azure后,如何让代码优先迁移运行

更新1

这是我的发布设置。出于某种原因,我没有“执行代码优先迁移”的复选框选项,我猜这就是问题所在。。。

Huzzah!问题出在我的更新上。我从其他SO帖子中发现有时会发生his。清理并重建,然后重新启动VS,恢复了“执行代码优先迁移”复选框。重新部署,一切都很好。

Huzzah!问题出在我的更新上。我从其他SO帖子中发现有时会发生his。清理d重新生成,然后重新启动VS,恢复了“执行代码优先迁移”复选框。重新部署后,一切正常。

您是否检查了这些代码行

在web.config中:

<appSettings>
  <add key="MigrateDatabaseToLatestVersion" value="true"/>
</appSettings>

你检查过这些代码行了吗

在web.config中:

<appSettings>
  <add key="MigrateDatabaseToLatestVersion" value="true"/>
</appSettings>

您正在使用哪个数据库初始值设定项?应该类似于:Database.SetInitializer(新的MigrateDatabaseToLatestVersion())
public Configuration(){AutomaticMigrationsEnabled=false;…}
告诉entity framework您不希望它自动运行迁移,仅当您专门使用package manager控制台命令
Update Database
时,我遇到了相反的问题。我刚刚连接到Azure上的一个新db,尽管我的配置指定了
AutomaticMigrationsEnabled=false,但自动迁移还是运行了;
您使用的是哪个数据库初始值设定项?应该类似于:Database.SetInitializer(new MigratedDatabaseToLateStVersion())
public Configuration(){AutomaticMigrationsEnabled=false;…}
告诉entity framework您不希望它自动运行迁移,仅当您专门使用package manager控制台命令
Update Database
时,我遇到了相反的问题。我刚刚连接到Azure上的一个新db,尽管我的配置指定了
AutomaticMigrationsEnabled=false,但自动迁移还是运行了;
也有同样的问题,但上面的问题并没有解决。下面的问题解决了。在global.asax中,我有“Database.SetInitializer(new xxxDbInitializer());”我注释掉了这一行,重新生成,注释了,重新生成,并且出现了复选框run code first migrations(运行代码先迁移)。不幸的是,出现了一个新问题。每个表中的列名必须是唯一的。表“xxx”中的列名“xxx”被多次指定。我将为此打开一个新问题。出现了相同的问题,但上面的问题没有解决在global.asax中,我有“Database.SetInitializer(new xxxDbInitializer());”我注释掉了这一行,重新生成,注释了,重新生成,并且出现了复选框run code first migrations(运行代码先迁移)。不幸的是,出现了一个新问题。每个表中的列名必须是唯一的。表“xxx”中的列名“xxx”被多次指定。我将就此提出一个新问题。