我正在开发一个使用 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/