2012-08-22 39 views
0

我已经开始关注4.3.1上的实体框架迁移。有几个问题:为什么使用实体框架迁移

  1. 开发期间的首选项是什么?为什么我不应该总是放弃并重新创建我的数据库,然后重新设置种子。如果我使用代码第一次迁移,可以 我选择初始化我的数据库,然后将种子方法添加到每个 迁移到仅添加新数据?如果我使用自动迁移,是 它可能做类似的事情?即最初的种子,然后根据需要种子 ?

  2. 在开发过程中使用迁移的好处是什么?我只有 实际上在迁移到生产时需要迁移。所以,我需要 创建我的初始脚本,然后创建每个迁移的脚本,因此 将只能使用迁移一次,我想要迁移到 生产,并在此时创建一​​个初始脚本并保留一个 迁移历史记录那一点呢?

回答

1

那么,在我们的例子中,我们开始使用迁移,因为在我们公司,开发者不具备必要的权限来创建一个数据库,从而导致在那里我放弃了DB一对夫妇的有趣场景次,并不得不要求数据库管理员每次重新创建它...
在我看来,增量增长您的数据库似乎更容易,而不是每次都必须重新创建它。如果每次添加,删除或更改属性时都必须删除并重新创建我们的数据库,我永远不会看到它的结尾。

我还没有看到增量种子的可能性,除非可能创建手动迁移文件。
迁移可以转到特定版本(向前或向后),并且可以从迁移生成SQL脚本。
因此,基本上,您不必手动创建迁移SQL脚本,就可以使用Migrations为您完成迁移。

+0

谢谢!它似乎是一个很酷的功能,我只是不愿意在我的开发环境中使用迁移,因为它在每次更新时运行种子方法,因此我的数据被复制。我可以使用AddorUpdate,但是从我读过的东西看来,它似乎有自己的问题,这就是为什么它似乎是最简单和最安全的删除和重新创建。如果我们可以关闭种子方法或在每次迁移时运行多个种子方法,那将是非常好的。我假设一种解决方法是将Sql(插入)添加到我的迁移文件中......但是,然后我的种子数据不在一个位置,有点凌乱 –

+0

是的,这确实很烦人。我们首先检查数据库中是否已经存在某个记录(通常会播种),如果这样会中止播种,我们快速而又肮脏地解决了这个问题。从我在其他SO帖子中看到的内容,如果使用手动迁移,则可以逐渐种子。可以转种子:只要不在你的种子方法中加入任何代码:-) –

+0

你可以使用AddOrUpdate()方法,它提供了一个简单的方法来做到这一点:) – Ross