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”被多次指定。我将就此提出一个新问题。