我使用codefirst,然后发布我的应用程序版本1.0。
现在我改变了一堆表格,我想用2.0升级我的应用程序的1.0分贝。
这种情况通常如何在实体框架中处理?
答案 0 :(得分:1)
EF没有任何内置用于生成差异脚本[尚未]。 EF可以删除并重新创建数据库,但这在现实世界中并不真正可用......他们似乎有数据库迁移的计划,但我不知道何时/是否可用({{3} })。
如果要进行增量更改(添加/删除表,列,约束,索引等),则必须编写SQL脚本,以应用从版本1数据库到版本2数据库所需的更改。在数据库中的某处存储db“版本号”是一个好主意,以便在“野外”运行许多不同版本时更容易应用正确的脚本。
或者,有第三方工具可以基于EDMX / db差异生成增量差异脚本(“alter table ...”等),例如:我对EF4的'Model Comparer':http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx
答案 1 :(得分:0)
我们使用的另一种选择是保留两个实体框架模型,一个用旧,一个用新。借助反射,您可以创建最适合的迁移算法。
旧EF模型可以序列化为XML或任何此类格式。然后,您可以删除并重新创建数据库并从XML反序列化您的EF模型并将它们放回新数据库中。但是,插入标识似乎没什么问题,但可以进行管理。
但是这个解决方案仅适用于大型数据库的小型数据库,您需要更高级的解决方案。