博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF6学习笔记七:代码迁移
阅读量:5244 次
发布时间:2019-06-14

本文共 1673 字,大约阅读时间需要 5 分钟。

要专业系统地学习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

其他命令

cls 清屏,这和fildder一样

 

转载于:https://www.cnblogs.com/jinshan-go/p/10267652.html

你可能感兴趣的文章
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
snmpwalk命令常用方法总结
查看>>
网站产品设计
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>