c# - 使用 MVC5 更新 EF5 中的 Db

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

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

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

最佳答案

当我开始在 Entity Framework 中使用代码优先时,我遇到了与您相同的情况。我一直在运行 Update-Database -F 然后观察我所有的表被删除并重新创建,即使是像重命名字段这样简单的事情也是如此。

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

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

我认为您有四种选择;

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

如果我能提供进一步的帮助,请告诉我。

关于c# - 使用 MVC5 更新 EF5 中的 Db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383947/

相关文章:

c# - 启动时不发生 Excel VSTO NewWorkbook 事件

c# - ASP MVC 中的动态验证

model-view-controller - Entity Framework 实现代码优先迁移并防止数据丢失

c# - 获取生日提醒Linq查询忽略年份

asp.net-mvc - MVC 和 MVVM 有什么区别和相似之处?

c# - 相当于 C# (.NET) 中 Python 的 request.session.auth

c# - 如何获取特定目录的相对文件名?

C#调用Listview的SelectedIndexChange事件中的文本框焦点失去对事件完成的关注

asp.net-mvc - 每个验证属性的所有不显眼的验证属性的列表

asp.net-mvc - 如何在 .ascx 中显示源代码