Entity framework 如何使用Entity Framework来使用现有数据库,以及如何使用迁移在DB版本之间切换?

Entity framework 如何使用Entity Framework来使用现有数据库,以及如何使用迁移在DB版本之间切换?,entity-framework,entity-framework-migrations,Entity Framework,Entity Framework Migrations,问题: 您有一个要与EntityFramework一起使用的现有数据库,以便可以通过类进行数据库更改。您还希望能够使用迁移功能在数据库版本之间切换 不幸的是,对于现有数据库来说,这不是现成的,但是您可以使用反向POCO生成器对数据库进行反向工程,就像从头开始编写一样 希望我的逐步解决方案能让其他人受益,我相信我会在6个月后再次参考它 创建名为MyEF(类库项目)的新项目 从Visual Studio菜单工具|扩展和更新菜单或在其中安装EntityFramework反向POCO生成器。选择联机|

问题:

您有一个要与EntityFramework一起使用的现有数据库,以便可以通过类进行数据库更改。您还希望能够使用迁移功能在数据库版本之间切换

不幸的是,对于现有数据库来说,这不是现成的,但是您可以使用反向POCO生成器对数据库进行反向工程,就像从头开始编写一样

希望我的逐步解决方案能让其他人受益,我相信我会在6个月后再次参考它

  • 创建名为MyEF(类库项目)的新项目


  • 从Visual Studio菜单工具|扩展和更新菜单或在其中安装EntityFramework反向POCO生成器。选择联机| Visual Studio Gallery |模板| Visual C#|数据库,安装
    EntityFramework反向POCO生成器

  • 使用软件包管理器控制台,通过
    install-Package-EntityFramework

  • 使用模板添加一个名为MyDB.tt的新C#项:
    EntityFramework Revor POCO code First Generator

  • 将ConnectionString部分添加到app.Config类并指向您的数据库

  • e、 g

    }

  • 从PMC发出:
    更新数据库

  • 通过编辑将MyDb.cs中的新属性添加到MyTable类来更改模型:

  • //我的桌子 公共类MyTable { 公共int-Id{get;set;}//Id(主键) 公共字符串名称{get;set;}//Name 公共字符串Sex{get;set;}//Sex 公共整数{get;set;}//Age 公共bool AmIAwesomeOrWhat{get;set;} }

  • 重建解决方案

  • 发出命令以保存新迁移并更新数据库

  • 添加迁移MyNewProperty 更新数据库

    以下命令将切换到您想要的任何迁移

    update-database -targetmigration:Initial
    update-database -targetmigration:MyNewProperty
    

    EntityFramework反向POCO生成器不是NuGet软件包。迁移内置于生成器的最新版本中(可在www.reverseepoco.com上获得)。在.tt文件中,为MigrationConfigurationFileName指定名称和集合。
    public partial class Initial : DbMigration
    {
        public override void Up()
        {           
        }
    
        public override void Down()
        {
        }
    }
    
    update-database -targetmigration:Initial
    update-database -targetmigration:MyNewProperty