EF6:使用代码优先迁移重命名命名空间
本文关键字:迁移 重命名 命名空间 代码 EF6 | 更新日期: 2023-09-27 18:03:46
我有可能重命名我的整个项目的命名空间(当然包括:DbContext类,Migrations配置类等),而不会破坏任何东西或必须重新创建我的所有迁移?
假设我有一个Project MyProject,命名空间是
Foo.MyProject
配置类在
Foo.MyProject.Migrations
假设我想重命名Foo命名空间为Bar,当然我的Configurations命名空间现在将是
Bar.MyProject.Configurations
是否有任何正确的方法来做到这一点,并保持所有当前的迁移仍然工作?这些方法是否涉及手动编辑__migrationhistory表或其他东西?(我一眼就看到了ContextKey列,我怀疑我应该手动编辑。)
是的,您确实需要更新__migrationhistory表中的ContextKey。代码:
UPDATE [dbo].[__MigrationHistory]
SET [ContextKey] = 'New_Namespace.Migrations.Configuration'
WHERE [ContextKey] = 'Old_Namespace.Migrations.Configuration'
关于使用EF6重命名命名空间的一个很好的阅读主题:
http://jameschambers.com/2014/02/changing-the-namespace-with-entity-framework-6-0-code-first-databases/