【问题标题】:Apply EF7 Migrations on Azure在 Azure 上应用 EF7 迁移
【发布时间】:2015-08-16 19:30:33
【问题描述】:

如何在 Azure 数据库上应用 EF7 迁移?

根据this link,您只需在“发布配置文件”设置中打勾即可。好吧,我没有那个复选框 - 我不确定从那时起配置文件配置是否发生了变化,但我什至没有 databases 部分。

根据this link,EF7 不支持数据库初始化程序,您必须使用 nuget 包管理器或 k (dnx) 迁移。我不确定 nuget 选项,所以使用 dnx 选项:如何使用 dnx 控制台窗口或 VS 中的包管理器控制台连接到我的 Azure(托管)项目/网站?

还有其他选择吗(希望更容易!)这样做?

【问题讨论】:

    标签: asp.net entity-framework azure dnx entity-framework-migrations


    【解决方案1】:

    这是“新”方式:

    _context.Database.EnsureCreated();
    _context.Database.Migrate();
    

    简单。

    我的 Azure 数据库不知何故应用了一些迁移,但 __EFMigrationsHistory 表中没有任何内容,因此我删除了所有其他表,然后运行所有迁移以将其恢复到我想要的位置。

    【讨论】:

    • 你在哪里运行这个?我的 dbcontext 初始化程序中有类似的东西,但这意味着即使没有要添加的新迁移,迁移也会在运行时开始抛出错误。因此,当我想迁移时,我正处于添加Database.Migrate() 的悲伤过程中,运行一次查询以便调用发生,然后取出线路并重建......
    • 不要使用EnsureCreated()。只能使用Migrate(),如果数据库不存在,它会创建数据库。 See the docs on Migrate()
    【解决方案2】:

    我已通过更改本地项目的连接字符串、将 Azure 上的防火墙打开到我的 IP 地址并运行 dnx . ef migration apply 命令来成功应用迁移。

    但是,这对我来说似乎不是一个好的解决方案:现在我必须将我的实时连接字符串存储在我的开发项目中并不断在两者之间切换。一定有更好的方法...?

    【讨论】:

    • 我遇到了同样的问题,我以同样的方式解决了它——每次我想应用迁移时都将连接字符串更改为 Azure DB。另一种方法是让应用程序在启动时自动应用迁移。此处代码 sn-p:stackoverflow.com/a/28504178/19712
    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多