问题:
您有一个要与EntityFrameworks一起使用的现有数据库,以便您可以通过类进行数据库更改。您还希望能够使用迁移功能在数据库版本之间切换。
不幸的是,这不适用于现有数据库的开箱即用,但您可以使用反向POCO生成器对数据库进行反向工程,就像从头开始编写数据库一样。
希望我的分步解决方案能让其他人受益,我相信我会在6个月后再次提及它。
答案 0 :(得分:3)
创建名为MyEF(类库项目)的新项目
从here或在Visual Studio菜单“工具”|“扩展和更新”菜单中安装 EntityFramework Reverse POCO生成器。选择在线| Visual Studio库|模板| Visual C#|数据库,安装EntityFramework Reverse POCO generator
。
使用Package Manager控制台,按Install-Package EntityFramework
使用模板添加名为MyDB.tt的新C#项:EntityFramework Rever POCO Code First Generator
将connectionStrings部分添加到app.Config类并指向您的数据库。
e.g。
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=CP8;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;" providerName="System.Data.SqlClient" />
</connectionStrings>
在文件MyDB.tt中,将“MyDbContext”更改为“DefaultConnection”或您的连接名称。保存TT文件和反向POCO生成器将对数据库进行反向工程,并为您构建代码优先类。
如果您的数据库有_MigrationHistory表,请将其删除!
在包管理器控制台(PMC)中发出以下内容
启用 - 迁移-EnableAutomaticMigrations -Force add-migration Initial
命名空间MyEf.Migrations { 使用系统; 使用System.Data.Entity.Migrations;
public partial class Initial : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
}
从PMC发出:update-database
通过编辑将MyDb.cs中的新属性添加到MyTable类来更改模型:
// MyTable 公共课MyTable { public int Id {get;组; } // Id(主键) public string Name {get;组; } // 名称 public string Sex {get;组; } //性别 public int?年龄{得到;组; } //年龄 公共布尔AmIAwesomeOrWhat {get;组; } }
重建解决方案
发出命令以保存新迁移,并更新数据库
添加迁移MyNewProperty 更新的数据库
以下命令将切换到您想要的任何迁移。
update-database -targetmigration:Initial
update-database -targetmigration:MyNewProperty