繁体   English   中英

您如何处理实体框架中的数据库更改

[英]How do you handle database changes in Entity framework

我使用codefirst,并发布了我的应用程序的1.0版。

现在,我更改了一些表内容,并希望将应用程序的1.0 db升级为2.0。

通常在实体框架中如何处理这种情况?

EF没有内置任何可用于生成差异脚本的工具[尚未]。 EF可以删除并重新创建数据库,但是在现实世界中确实不可用... ...它们似乎已经计划了数据库迁移,但是我不知道何时/是否可以使用( http:// blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx )。

如果要进行增量更改(添加/删除表,列,约束,索引等),则必须编写SQL脚本,以应用从版本1 DB到版本2 DB所需的更改。 将db“版本号”存储在数据库中的某个位置是个好主意,以便在有许多“狂野”运行的不同版本时,更容易应用正确的脚本。

或者,有第三方工具可以基于EDMX / db差异生成增量差异脚本(“ alter table ...”等),例如,我的EF4“模型比较器”: http : //huagati.blogspot.com/2010/ 07 / introducing-model-comparer-for-entity.html

我们使用的一种替代方法是保留两个实体框架模型,一个包含旧模型,另一个包含新模型。 借助反射,您可以创建最适合的迁移算法。

旧的EF模型可以序列化为XML或任何此类格式。 然后,您可以删除并重新创建数据库,并从XML反序列化EF模型,然后将它们放回新的DB中。 但是,插入身份似乎没有什么问题,但是可以对其进行管理。

但是此解决方案仅适用于小型数据库,对于大型数据库,您将需要更高级的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM