我正在使用Entity Framework 5和MVC5开展一个项目.我的项目目前正在运行.
我想在表中添加一列.但正如我们所知,在EF中,当我们在模型中添加一个字段时,它会丢弃并重新创建数据库,我无法做到.
一种方法是找到代码迁移.但我的经理不允许我使用它(因为它是一个大型数据库项目).
我想在表中添加一列.但正如我们所知,在EF中,当我们在模型中添加一个字段时,它会丢弃并重新创建数据库,我无法做到.
一种方法是找到代码迁移.但我的经理不允许我使用它(因为它是一个大型数据库项目).
请帮助我并为它提出一些建议.
解决方法
当我首先使用Entity Framework开始使用代码时,我遇到的情况和你一样.我一直在运行Update-
Database -F,然后看着我的所有表都被删除并重新创建,即使是像重命名字段那样简单的事情.
版本控制数据库很难,但命名迁移更容易(我认为这是您在引用代码迁移时的意思).我知道你的老板反对这个想法,但它非常灵活.
基本上,您在程序包管理器控制台中运行Add-Migration -Name xxx,并且实体框架将使用默认命令(用于版本化Up()和Down())为您构建配置类,它将在Update-Database时执行.如果您不喜欢这些命令,可以更改它们.如果需要,你甚至可以移动数据(虽然它有点繁琐).
我想你有四种选择;
>使用代码优先自动迁移:这是您目前所拥有的,并且无法充分控制更新数据库时发生的情况.它适合在项目的早期阶段开始,但在生产后变得难以处理.
>使用代号优先命名的迁移:通过配置为您提供所需的控制 – 但您的老板已阻止使用它.
>使用数据库优先方法:Database First允许您从现有数据库对模型进行反向工程.因此,如果您需要进行更改,则首先更改数据库,然后使用EF重新生成模型.这通常受到DBA的青睐,但这可能意味着您重新实现了现有项目的某些方面.
>不要使用实体框架:有可能你可以恢复到你的老板可能接受的SQL查询,并为你提供所需的灵活性 – 但谁需要那种痛苦?
如果我能进一步帮助,请告诉我.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。