使用MVC5更新EF5中的Db

时间:2014-06-24 10:12:06

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

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

请帮助我并为此提出建议。

1 个答案:

答案 0 :(得分:1)

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

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

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

我认为您有四种选择;

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

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