Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVC5更新EF5中的数据库_C#_Asp.net Mvc_Model View Controller_Entity Framework 5_Asp.net Mvc 5 - Fatal编程技术网

C# 使用MVC5更新EF5中的数据库

C# 使用MVC5更新EF5中的数据库,c#,asp.net-mvc,model-view-controller,entity-framework-5,asp.net-mvc-5,C#,Asp.net Mvc,Model View Controller,Entity Framework 5,Asp.net Mvc 5,我正在从事一个使用实体框架5和MVC5的项目。我的项目目前正在运行。 我试图在表中添加一列。但正如我们所知,在EF中,当我们在模型中添加一个字段时,它会删除并重新创建数据库,这是我无法做到的。 其中一种方法是代码迁移。但我的经理不允许我使用它(因为它是一个大型数据库项目) 请帮助我并提出一些建议。当我开始在Entity Framework中首先使用代码时,我的情况与您相同。我总是运行updatedatabase-F,然后看着我所有的表被删除和重新创建,即使是像重命名字段这样简单的事情 对数据库进

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


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

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

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

实际上,您在Package Manager控制台中运行
Add Migration-Name xxx
,实体框架将使用默认命令为您构建一个配置类(用于版本控制
Up()
Down()
),它将在
更新数据库时执行。如果您不喜欢这些命令,可以更改它们。如果需要,您甚至可以四处移动数据(不过这有点麻烦)

我想你有四个选择

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

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

您好,我只是想问一下迁移将遵循什么流程。比如,它创建现有数据库的备份,并在数据库结构中更新后再次恢复它?或者它只是更新_migrationtable还是什么?您是否在寻求目前在生产中更新数据库的最佳方法?