如何在部署的asp mvc网站上更新数据库模型而不会丢失数据

时间:2014-07-16 12:05:38

标签: asp.net-mvc entity-framework

如何在部署后更新asp mvc网站中的数据库模式(模型),而不会丢失任何先前的数据?

我刚刚将一个MVC5网站部署到azure网站。一切都很好,因此我开始上传一些数据。然后我想出了我需要更新的东西。这很简单,我只想对其数据库架构稍作修改。

在本地机器(开发阶段),我们可以运行

Update-Database
包管理器控制台上的

。这是问题吗?如何对发布的版本做同样的想法?我没有尝试重新发布我的解决方案,担心数据会丢失(数据很多,重新上传太多)。

我首先使用实体​​框架6代码并启用迁移:

public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }

我想要做的只是在数据行之一添加一个属性:

public class MyViewModel
{
    public string Name {get;set; }

    public string Content { get; set; }
}

为:

public class MyViewModel
{
    public string Name {get;set; }

    [AllowHtml] //ADDING THIS ONLY
    public string Content { get; set; }
}

感谢。

2 个答案:

答案 0 :(得分:3)

除其他解决方案外,您可以使用此

Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>());

其中BlogContext是您的上下文,Configuration是由代码首先生成的配置类(从DbMigrationsConfiguration<T>下降的一个)。

当然,您必须重新发布您的申请(至少是二部分)。

另请阅读http://msdn.microsoft.com/en-us/data/jj591621.aspx,特别是最后几段。

答案 1 :(得分:0)

欢迎来到生产环境中Code First Migrations的可怕之处!需要注意的一点是,如果启用自动迁移,则永远不能还原迁移。相反,建议您不要进行自动迁移。而是从您的控制台运行add-migration "migrationName"。这将使用up和down方法向迁移文件夹添加迁移,您可以在其中查看与该迁移相关的所有更改。您可以通过运行update-database -script来查看将对数据库运行的SQL。实际上不会运行更改,但您可以看到生成的sql。 Here是Code First迁移和部署以及web.config文件中所需的所有更改的一个很好的演练。

我相信在您使用自动迁移时,默认情况下会禁用数据丢失。