【问题标题】:Update Db in EF5 with MVC5使用 MVC5 更新 EF5 中的 Db
【发布时间】:2014-08-14 13:22:18
【问题描述】:

我正在开发一个使用 Entity Framework 5 和 MVC5 的项目。我的项目目前正在运行。 我正在尝试在表格中添加一列。但是我们知道,在 EF 中,当我们在模型中添加一个字段时,它会删除并重新创建数据库,这是我做不到的。 一种方法是找到代码迁移。但是我的经理不允许我使用它(因为它是一个大型数据库项目)。

请帮助我并为它提出一些建议。

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller entity-framework-5 asp.net-mvc-5


    【解决方案1】:

    当我开始在 Entity Framework 中使用代码时,我的情况和你一样。我一直在运行Update-Database -F,然后看着我所有的表都被删除并重新创建,即使是像重命名字段这样简单的事情。

    版本控制数据库很难,但使用命名迁移(我认为这就是您提到代码迁移时的意思)要容易得多。我知道你的老板反对这个想法,但它非常灵活。

    基本上,您在包管理器控制台中运行Add-Migration -Name xxx,Entity Framework 将使用默认命令(用于版本控制Up()Down())为您搭建一个配置类,它会在您Update-Database 时执行。如果您不喜欢这些命令,可以更改它们。如果需要,您甚至可以移动数据(虽然这有点繁琐)。

    我认为您有四种选择;

    • 使用代码优先的自动迁移:这是您目前所拥有的,并且无法让您充分控制更新数据库时发生的情况。它适合在项目的早期阶段开始,但在生产后变得笨拙。
    • 使用代码优先命名迁移:通过Configurations 为您提供所需的控制 - 但您的老板已阻止使用它。
    • 使用数据库优先方法:Database First 允许您从现有数据库对模型进行逆向工程。因此,如果您需要进行更改,您将首先更改您的数据库,然后使用 EF 重新生成您的模型。这通常受到 DBA 的青睐,但这可能意味着您已经重新实现了现有项目的某些方面。
    • 不要使用实体框架:您可能会恢复到 SQL 查询,您的老板可能会接受并为您提供所需的灵活性 - 但谁需要这种痛苦?

    如果我能提供更多帮助,请告诉我。

    【讨论】:

    • 嗨,我只是想问一下迁移过程是什么。就像,它创建现有数据库的备份并在数据库结构更新后再次恢复它?或者它只是更新 _migrationtable 还是什么?
    • 您是否正在寻求更新您目前生产中的数据库的最佳方法?
    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多