EF6学习笔记七:代码迁移

要专业系统地学习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 -script -sourceMigration 201901070409494_jinshantest7 -verbose
这样做就可以讲已经应用到数据库的迁移,生成的SQL语句给你在VS中一个新的Tab页显示出来,像这样

使用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

猜你喜欢

转载自www.cnblogs.com/jinshan-go/p/10267652.html
EF6