C# EF Core迁移数据库

现象:

在CodeFirst时,先写字段与表,创建数据库后,再添加内容

但字段与表会变更,比如改名·删除·增加等

需求:

当表字段变更时,同时变更数据库,执行数据库迁移


核心命令

Add-Migration firstMigration 

update-database

步骤

打开程序包管理窗口

工具=>NuGet包管理器=>程序包管理控制台

Add-Migration代表迁移命令:后边参数为名称

输入命令:

Add-Migration firstMigration

但是可能会报错,提示EntityFramework的程序包未安装

Your target project 'ShangShangQian' doesn't reference EntityFramework. This package is required for the Entity Framework Core Tools to work. Ensure your target project is correct, install the package, and try again.

NuGet安装下

安装完毕,再执行Add-Migration firstMigration

No migrations configuration type was found in the assembly 'ShangShangQian'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).

在程序集“ShangShangQian”中找不到迁移配置类型。(在Visual Studio中,可以使用Package Manager控制台中的“启用迁移”命令添加迁移配置)。

再去执行:启用迁移”命令

Enable-Migrations

哦……可能得加个数据库上下文,就是你继承DbContext的类

再执行下Enable-Migrations -ContextTypeName 加上命名空间与类名

Enable-Migrations -ContextTypeName ShangShangQian.EFCore.DataBaseContext

Checking if the context targets an existing database...
System.ArgumentException: The type 'DataBaseContext' does not inherit from DbContext. The DbMigrationsConfiguration.ContextType property must be set to a type that inherits from DbContext

The type 'DataBaseContext' does not inherit from DbContext. The DbMigrationsConfiguration.ContextType property must be set to a type that inherits from DbContext.

正在检查上下文是否以现有数据库为目标。。。

系统ArgumentException:类型“DataBaseContext”不是从DbContext继承的。DbMigrationsConfiguration。ContextType属性必须设置为从DbContext继承的类型。

继承了啊,奇了怪了…………

Goole下=>缺个 Microsoft.EntityFrameworkCore.Tools 装下

再执行添加启用迁移命令:

Enable-Migrations -ContextTypeName ShangShangQian.EFCore.DataBaseContext

Both Entity Framework Core and Entity Framework 6 are installed. The Entity Framework Core tools are running. Use 'EntityFramework6\Enable-Migrations' for Entity Framework 6.
Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.

实体框架核心和实体框架6都已安装。实体框架核心工具正在运行。对实体框架6使用“EntityFramework6\启用迁移”。

“启用迁移”已过时。使用“添加迁移”开始使用迁移。

=======》去你姥姥的,坑我,这不回到了起点《=======

Add-Migration firstMigration

死马当活马医吧,执行试试

再跑下更新命令?

update-database

表模型变更,执行这俩行,去测试下 把表和字段增加·删除·试试,哦 报错了……

Failed executing DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE "Chats" (
    "ChatID" INTEGER NOT NULL CONSTRAINT "PK_Chats" PRIMARY KEY AUTOINCREMENT,
    "FromID" INTEGER NOT NULL,
    "ToID" INTEGER NOT NULL,
    "Message" TEXT NOT NULL,
    "Type" INTEGER NOT NULL,
    "IsRead" INTEGER NOT NULL,
    "SendTime" TEXT NOT NULL,
    "ReadTime" TEXT NOT NULL,
    "IsPushFrom" INTEGER NOT NULL,
    "IsPushTo" INTEGER NOT NULL
);

 SQLite Error 1: 'table "Chats" already exists'.

为啥执行更新数据库要创建表呢,db已经存在了啊

又坑了我半天……就这样半个世纪过去了

不要灰心,猛补各种教学,原来是流程问题

问题出在EnsureCreatedAsync这个函数上

首次执行Add-Migration firstMigration命令,生成的迁移文件全是创建指令

再执行update-database

会执行创建表的命令,

但是之前通过EnsureCreatedAsync函数创建db数据库,已有表

所以报错,把db 与函数删除就可以了

创建数据库应由数据库迁移命令完成 update database

再此执行就可以

更高级的数据库功能请自行研究吧,如回退等

你也去补习下吧


文章写的有点乱

原本更新数据库分分钟的事,鼓捣半天,主要还是不熟 

不过管他呢,代码能跑就行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/266709.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算 2月20号 (认识操作系统)

1、认识操作系统 计算机系统的组成 知识点1:没有软件系统的计算机称之为"裸机" 知识点2:裸机提供基本的可计算性资源 知识点3:操作系统是最靠近硬件的软件层,负责管理和控制计算机硬件。 计算机硬件组成五大部件 运算器…

MySQL:合并查询语句

1、查询表的数据 t_book表数据 SELECT * FROM db_book.t_book; t_booktype表数据 SELECT * FROM db_book.t_booktype; 提醒: 下面的查询操作的数据来自上图查询表的数据 2. 使用 UNION 查询结果合并,会去掉重复的数据 使用UNION关键字是,数…

docker报错 fatal error: runtim: out of memory

fatal error: runtim: out of memory 真无语了 系统内存也够用 原来是虚拟机的不够用了 (原本1g已经加到2g还是会报错) 直接3台虚拟机都加到4g

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下计算机组成原理中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算机组成原理和西电的计算机组成原理。 计算机组成原理系列文章传送门: 第一/二章 概述和数据…

深度学习-回顾经典AlexNet网络:山高我为峰

深度学习-回顾经典AlexNet网络之山高我为峰 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰&#x…

Linux进程管理:(二)进程调度原语

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 进程调度的概念比较简单&#xff0c…

ubuntu系统下大数据服务器磁盘调优测试记录

一、背景 在kvm虚拟机ubuntu操作系统大数据平台测试的过程中,遭遇了磁盘I/O性能的瓶颈,因有cpu绑核操作,故有做隔核操作验证是否是绑核影响的磁盘I/O,后又对磁盘进行透传以及挂内存盘等操作; 二、磁盘介绍 2.1 磁盘…

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2.解压安装包 防止后面单个系列解压操作,我这边就直接将所有的要用的全部给解压,如下图注…

分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

作者:深耕行业的 SmartX 金融团队 闫海涛 在《解决 SAN 交换机“卡脖子”并升级存储架构?一文解析 RoCE 与相关存储方案趋势》文章中,我们分析了如何利用支持 RoCE 技术的分布式存储,同步实现 IT 基础架构的信创转型与架构升级&a…

利用python爬取本站的所有博客链接

目录 前因 首先的尝试 解决办法 导入包 定义一个json配置文件 打开浏览器执行操作 注意 提取源代码并且进行筛选链接 执行结果 前因 由于自己要把csdn的博客同步到hugo中,把博客转为md格式已经搞好了,但是由于csdn的图片具有防盗链,…

通过一篇文章让你了解数据结构和算法的重要性

通过一篇文章让你了解数据结构和算法的重要性 前言一、 什么是数据结构?二、什么是算法?三、数据结构和算法的重要性在校园招聘的笔试中:在校园招聘的面试中:在未来的工作中: 四、如何学好数据结构和算法4.1 死磕代码&…

swift 长按桌面图标弹出快捷选项

文章目录 一、3D Touch二、主屏交互1. 静态添加2. 动态添加三、监听主屏交互按钮的点击事件四、预览和跳转1. 注册3D touch2. 实现协议3. 在目标控制器复写previewActionItems4. 使用UIContextMenuConfiguration一、3D Touch 3D Touch通过屏幕下方的压力感应器来感知不同的压力…

【学习记录】Resnet

Resnet的残差块 BasicBlock模块: Resnet的作用 解决梯度消失。网络越深,会导致梯度消失。Resnet可以解决梯度消失的问题。 Resnet的原理 参考视频:https://www.bilibili.com/video/BV1cM4y117ob/?spm_id_from333.337.search-card.all.cl…

虚拟机部署Sentry步骤,国内地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

vue3中实现elementPlus表格选中行的上移下移

先看效果&#xff1a; 实现步骤&#xff1a; 1、给el-table添加current-change事件、高亮属性及ref属性 2、给上移下移按钮添加事件 // 定义当前选中的行参数 const currentRow ref<any>(null); // 定义表格的ref const singleTableRef ref(); // 行选中事件 const ha…

AI智能分析网关V4智慧环保/智慧垃圾站视频智能分析与监控方案

一、背景介绍 随着城市化进程的加速&#xff0c;垃圾处理问题日益受到人们的关注&#xff0c;传统的垃圾站管理方式已经无法满足现代社会的需求。针对当前垃圾站的监管需求&#xff0c;TSINGSEE青犀可基于旗下视频智能检测AI智能分析网关V4与安防监控视频综合管理系统EasyCVR平…

Python+neo4j构建豆瓣电影知识图谱

文章目录 数据来源数据整理导入节点和关系导入使用Subgraph批量导入节点和关系 多标签实体和实体去重 数据来源 http://www.openkg.cn/dataset/douban-movie-kg 该网址拥有丰富的中文知识图谱数据集&#xff0c;OpenKG(Open Knowledge Graph)&#xff0c;可供研究人员使用研究…

服务器权限:Error: EACCES: permission denied, open‘/Cardiac/uniquC.csv

背景&#xff1a; 我想在服务器上传一个文件uniquC.csv&#xff0c;但是服务器说我没有权限 解决方案&#xff1a; 1. 查看目前是否存在对文件夹的权限 ls -ld /Cardiac/ # your fold path 此时&#xff0c;我发现 这也意味着root也没有赋予写的权限。 2. 拿到root权限 …

C语言可以干些什么?C语言主要涉及哪些IT领域?

C语言可以干些什么&#xff1f;C语言主要涉及哪些IT领域&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家…

肿瘤相关巨噬细胞TAM综述及研究学习②

​​​​​​​肿瘤浸润性巨噬细胞的复杂作用&#xff08;综述浏览&#xff09;-CSDN博客 TAM 支持癌细胞的生长和转移&#xff0c;并对 TME 的适应性免疫细胞产生免疫抑制作用。&#xff08;上一篇学习文献&#xff09; 目录 综述① TAM在肿瘤中的作用 M1与 M2 TAM作用 …