我如何使用实体框架4.2执行数据库迁移

本文关键字:执行 执行数 数据库 迁移 何使用 实体 框架 | 更新日期: 2023-09-27 18:13:35

我刚刚开始深入研究ASP.net mvc。我有Django背景。我最喜欢Django的一点就是它的附加组件"South"。它允许我在代码中修改我的模型,然后我运行一个命令,它会找出改变了什么,并相应地更新数据库。

如果我用EF4中的"代码优先"方法添加、删除或重命名字段,会发生什么?它只是添加或删除字段,就这样吗?如果我想做一些事情,比如添加一个新字段,然后可能运行一个Linq-to-SQL查询来填充新字段,然后然后删除旧字段,该怎么办?我想要一个记录,以便当我在生产服务器上部署更改时,它将依次运行这3个命令。

有这样的东西吗?或者人们是如何处理这种情况的?(这是很常见的…)


编辑:找到一些链接。

  • https://softwareengineering.stackexchange.com/questions/76082/is-entity-framework-code-first-a-bit-meaningless-useless-in-production-and-what
  • http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx
  • 首先使用EF4代码:如何在不丢失数据的情况下更改模型
  • 使用EF 4.1部署数据库更改
  • https://github.com/dradovic/MigSharp
  • http://blogs.msdn.com/b/adonet/archive/2011/09/21/code-first-migrations-alpha-3-with-magic-walkthrough-automatic-migrations.aspx(哇!)

我如何使用实体框架4.2执行数据库迁移

以下是微软MVP David Hayden的优秀教程:
http://www.davidhayden.me/blog/asp.net-mvc-4-and-entity-framework-database-migrations

不确定4.2 -但我安装了最新的EF(4.3.1),它像一个魅力。

非常令人印象深刻-我是一个Rails家伙:p

会发生什么取决于你的初始化,我将讨论使用点网络方式的"标准"。

快速深入了解:

数据库初始化策略-看看顶部,这里使用了"DropCreateDatabaseAlways",所以它总是会删除数据库并重新创建它(你有其他的可能性)。-它说EF应该如何应对数据库的变化。

下面是可能的数据库初始化

如果你想要迁移,有两种方式:——魔法——没有魔法

你应该知道的是,Migrations实际上是1周以前的(EF 4.2),它已经在EF 4.1中实现了,虽然不是完全支持(不同的DB,…),但它正在改进。

这取决于你有多少时间,但我正在等待实现4.2和EF迁移,我将在本周末的"测试项目"中实现它,看看是否一切顺利并响应Ado。Net团队博客(参见Magic - No-Magic的链接)。虽然我认为不会有任何问题。

祝你好运!