要专业系统地学习EF前往《你必须掌握的Entity Framework 6.x与Core 2.0》这本书的作者(汪鹏,Jeffcky)的博客:https://www.cnblogs.com/CreateMyself/
这里主要记录一下我常用的几个迁移,还要其他的很多命令,我不去弄了
常用的就四个
Enable-Migrations:在项目中启用代码迁移
Add-Migration 对已挂起模型改变搭建基架,在添加迁移的时候,EF要做这几步
1.实体框架审查映射的解决方案中的模型
2.实体框架检查解决方案中的现有迁移,并确定自上次迁移以来所做的更改
3.构建更改的“脚本”,实体框架将更改“脚本”添加到迁移文件中
4.迁移文件以时间戳和更改的简要命名说明
Update-Database 通过add-migrations命令将挂起的模型迁移应用到数据库中并保持模型同步
Get-Migrations:显示已经应用到数据库的迁移
我在用数据迁移碰到的一些问题
数据库中表的改动,比如要删除某张表,可能应为依赖的关系删除不了,我无法再通过代码迁移去更新,只能手动去数据库修改
所以用数据迁移我的经验是,对于变动太大的模型,我会事先仔细想清楚,实体之间是什么关系要确定好,这也应该是我对数据迁移不太熟悉
还有就是我添加迁移,生成了一个迁移文件,还没有更新迁移,然后我对数据模型做了更改,然后我再添加迁移,就会报错
Unable to generate an explicit migration because the following explicit migrations are pending: [201901140747272_jinshantest1]. Apply the pending explicit migrations before attempting to generate a new explicit migration.
在尝试生成新的显式迁移之前,应用挂起的显式迁移。意思就是只能有一个迁移被挂起来,那我的做法,就是将我刚刚生成的那个迁移文件删掉,重新生成迁移。
通常我在用update-database指令时会用到-verbose,这个可以打印详细信息,得到EF生成的SQL语句,当然还可以这样
使用update-database命令迁移的时候,如果参数都不给,默认就是迁移当前挂起的迁移文件,可以指定它迁移到指定的版本
update-database -targetMigration jinshantest1
对于EF的迁移我们要记住以下三点
1、Entity Framework 实体框架使用_MigrationHistory表来追踪应用于数据库的更改
2、Entity Framework 实体框架创建项目中当前模型状态的哈希值,并将其与_MigrationHistroy表中的模型状态存储进行比较,以确定数据库是否为当前状态
3、进行迁移时,始终按照时间戳(升序)的顺序同步到数据库
寻求系统帮助
如果你对某一个指令不太了解,可以输入命令了解详细信息
若要查看示例,请键入:get-help enable-migrations -examples
有关详细信息,请键入:get-help enable-migrations -defailed
若要获取技术信息,请键入:get-help enable-migrations -full
其他命令
cls 清屏,这和fildder一样