如何在生产中重命名表和一些列

时间:2014-12-12 07:30:22

标签: mysql .net c#-4.0 entity-framework-4

我正在使用Entity Framework来处理服务器应用程序中的数据库。服务器应用程序部署到位于负载均衡器后面的多个节点。我现在发现需要重命名数据库中的一些表和一些表列。问题是我需要在没有任何停机时间的情况下这样做。

如果我正在编写自己的数据库层,我可以简单地检查数据库的结构,然后运行不同的代码,具体取决于数据库结构是否升级,然后我可能有0%的停机时间。

是否可以在实体框架4中执行类似的操作,或者如何使用实体框架在生产中实际进行数据库更改?我在网上搜索了任何解决方案但没有成功。我还考虑在我的应用程序中有2个实体框架实例,但是我必须编写的代码量才能在它们之间进行切换,这样做太多而且容易出错。

总结一下这个问题: 有没有办法在使用Entity Framework 4的生产环境中重命名数据库中的表和列,并且没有任何停机时间?

修改 我得到的一个新想法是创建一个视图来代替旧表,旧的命名方案引用新表。我不知道这是否有效。为了使它工作,Entity Framework需要接受这个视图,就像它是普通的表一样。这可能是个好主意吗?有人用EF4试过这样的事吗?

1 个答案:

答案 0 :(得分:0)

好!以下是我的想法 - 在DB中创建新表,而不是重命名和构建EntityFramework解决方案。

您需要通过从loadbalancer关闭一台服务器,更新它,将实体框架代码指向新的表结构然后再连接到loadbalancer来部署它。

逐个对loadbalancer中的所有服务器执行相同的过程。一旦完成所有更新补丁,然后同步旧表和新表,然后只删除旧表。我建议同步这些表,以便您可以在上述过程中获得没有数据丢失的所有数据。