ABP入门系列(21)——切换MySQL数据库

1. 引言

Abp支持MySql已经不是什么新鲜事了,但按照官方文档:Entity Framework - MySql Integration来,你未必能成功切换,本文就记录下切换MySql数据库遇到的一些坑,供后人乘凉!

2. 环境准备

MySql数据库好啊,开源免费,不再像SqlServer那样累赘。而且结合.Net Core,他俩贼般配的说!但MySql自从卖给Oracle后,好像就不怎么好玩了,安装起来还是挺费劲的说。一怒之下,转投MariaDB。

MariaDB由MySQL之父Michael Widenius主导开发的,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。

MariaDB完全兼容MySql,所以就放一百二十个心好了。就不废话了,自行点击MariaDB Downloads 下载安装吧。

3.开始切换环境

本文还是基于我之前的LearningMpaAbpDemo进行演示。

3.1. 安装MySql.Data.Entity

Solution-->右键-->'Manage NuGet Packages for solution...',安装MySql.Data.Entity到以”.Web"和“.EntityFramework”结尾的项目中去,如下图:

MySql.Data.Entity


注意版本号,安装最新,我可不保证可以成功!
修改“.EntityFramework”结尾的项目Migrations文件夹下的Configuration.cs类,在构造函数中添加SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());。如下所示:

 

3.2. 设置连接字符串

修改Web.Config,添加连接字符串:
<add name="Default" connectionString="server=localhost;port=3306;database=sampledb;uid=root;password=***" providerName="MySql.Data.MySqlClient"/>
之前的连接字符串就注释掉吧!

3.3. 重新添加迁移

如果你的Migrations文件夹下有很多以日期开头(比如:20171122022_)的迁移文件,全部删掉他们!
然后Tools-->Nuget Package Manage--> Package Manage Console:输入Add-Migration "Abp_MoveTo_Mysql"执行:

进行迁移

 

是的,你可能执行不成功,会遇到第一个坑:

Type is not resolved for member 'MySql.Data.MySqlClient.MySqlException,MySql.Data, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'.

如何搞呢?下载MySql为.Net平台提供的Connector安装就好了,
安装地址:Download Connector/Net。记住要选对对应的版本:

6.9.10

 

安装后,重新执行以上命令即可。

3.4. 执行迁移

执行命令Update-Database -Verbose,这个时候你会遇到第二个坑:

Index column size too large. The maximum column size is 767 bytes.

这是因为mysql对列的大小有限制。EF6使用MigrationHistory表跟踪模式的变化,以确保一致性的数据库模式和概念模式。由于主键太大,默认情况下此表不适合MySQL。要解决这种情况,需要缩小该表的键大小。具体可以参考以下两个链接:

  1. Entity Framework with MySql and Migrations failing because “max key length is 767 bytes”
  2. Entity Framework 6 Support

这边有个简单的做法,只需修改DbContext类上添加[DbConfigurationType(typeof(MySqlEFConfiguration))]声明即可。如下:

 

重新执行迁移命令,即可!

4. 最后

好久没更新了,现在重拾Abp,后续会结合ABP+.Net Core+MySQL,带给大家进阶分享,尽情期待!



作者:圣杰
链接:https://www.jianshu.com/p/543e34da16a7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

sm4 前后端 加密_sm4加密

前言项目里需要用到sm4加密&#xff0c;在这里记录一下(springboot)。依赖bouncycastleorg.bouncycastlebcmail-jdk15on1.66cn.hutoolhutool-all5.4.1代码直接贴代码&#xff0c;可以根据自己的需要封装相对应的代码逻辑。//需要注意的是&#xff0c;使用KeyGenerator生成密钥种…

ABP开发框架前后端开发系列---(1)框架的总体介绍

ABP是ASP.NET Boilerplate的简称&#xff0c;ABP是一个开源且文档友好的应用程序框架。ABP不仅仅是一个框架&#xff0c;它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型。学习使用ABP框架也有一段时间了,一直想全面了解下这个框架的整个来龙去脉&#xff0c;并把…

c++ pdflib输出表格_DescrTab2包,输出SCI级别的描述统计表

今天浏览R包&#xff0c;发现一个不错的包——DescrTab2包。看R包介绍&#xff0c;这个包可以绘制出版物质量级别的描述统计表。看起来很不错。下面来学习下。1. R包安装和加载install.packages("DescrTab2") # 安装包library(DescrTab2) # 加载包2. 加载演示数据集l…

linux – syslog,rsyslog和syslog-ng之间有什么区别?

基本上,它们都是相同的,因为它们都允许在中央存储库中记录来自不同类型系统的数据. 但它们是三个不同的项目,每个项目都试图改进前一个项目,具有更高的可靠性和功能性. Syslog项目是第一个项目.它始于1980年.它是Syslog协议的根项目.此时Syslog是一个非常简单的协议.一开始它只…

python syslog 接口_python接口测试之日志功能

之前在简书中看了一篇关于日志功能的文档&#xff0c;供大家参考&#xff1a;https://www.jianshu.com/p/62f7b49b41e7Python通过logging模块提供日志功能&#xff0c;所以直接导入即可import logging1.定义日志收集器&#xff0c;指定收集器的名称&#xff0c;返回logging对象…

架构、框架和设计模式关系

在学习软件工程的时候&#xff0c;第一次接触到了架构这个概念。当初接触的时候对其的理解是非常浅薄的&#xff0c;因为那时候工程经验比较少&#xff0c;对这样一个深层次的概念还是模糊不清楚的。 随着学习的深入&#xff0c;开始接触了设计模式&#xff0c;也就是那本令我爱…

服务器怎么控制忽略样式_使用JavaScript来编写你的CSS样式代码——JSS

介绍JSS是CSS的创作工具&#xff0c;它允许你使用JavaScript以声明&#xff0c;无冲突和可重用的方式描述样式。它可以在浏览器&#xff0c;服务器端或在构建时在Node中编译。JSS与框架无关。它由多个包组成&#xff1a;核心部分&#xff0c;插件以及框架集成等。Githubhttps:/…

Java设计模式、框架、架构、平台之间的关系

1、设计模式 为什么要先说设计模式?因为设计模式在这些概念中是最基本的&#xff0c;而且也比较简单。那么什么是设计模式呢?说的直白点&#xff0c;设计模式就是告诉你针对特定问题如何组织类、对象和接口之间的关系&#xff0c;是前人总结的经验。比如我要在代码中实现一个…

csrf漏洞防御方案_CSRF原理实战及防御手段

注:本文仅供学习参考csrf定义:CSRF跨站点请求伪造(Cross—Site Request Forgery)攻击者盗用了你的身份&#xff0c;以你的名义发送恶意请求&#xff0c;对服务器来说这个请求是完全合法的&#xff0c;但是却完成了攻击者所期望的一个操作&#xff0c;比如以你的名义发送邮件、发…

如何学习(记住)linux命令(常用选项)

作者&#xff1a;林果皞 链接&#xff1a;https://www.zhihu.com/question/21690166/answer/66721478 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 Unix & Linux 命令行特别之处在于&#xff0c;一些选项的设…

python 3.8 新特性 video_1分钟了解:Python3.8 新特性:仅位置参数

这是Python3.8新特性的第二篇&#xff0c;第一篇介绍了赋值表达式&#xff0c;这篇文章花几分钟了解什么是仅位置参数(Positional-Only Arguments)插播一条&#xff1a;我自己是一名从事了多年开发的Python老程序员&#xff0c;辞职目前在做自己的Python私人定制课程&#xff0…

增效工具_【危中寻机】降本增效生存之道 运用IE基础工具提升制造效率

效率提升的利器工业工程IE作为一门学科诞生于美国&#xff0c;却首先在日本得到了最大程度的践行与推广&#xff0c;成为了丰田生产方式TPS及精益制造LP的核心现场IE中的4大核心(工程分析、动作分析、时间分析、布局分析)仍是所有IE的入门工具&#xff0c;被笔者称为“基础IE”…

linux之fstab文件详解

/etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下&#xff0c;可以用命令less /etc/fstab 来查看&#xff0c;如果要修改的话&#xff0c;则用命令 vi /etc/fstab 来修改。 当系统启动的时候&#xff0c;系统会自动地从这个文件读取信息&#xff0c;并且…

python写空气质量提醒_Python数据可视化:2018年空气质量分析

就在本周,我碰巧看到一个学生抱怨天津的空气,我不禁思考的日子他是如此善良的和完善的。没有真相,就无图下面的图片证据。左边的图片是去年2月份。这样的空气真是少见!右边的是Tucao和我第一次买一个口罩!!!面具是好的,因为在那个时候,我用来运行的两个校园课程设计。基本上,我…

Linux日志安全分析技巧

0x00 前言 我正在整理一个项目&#xff0c;收集和汇总了一些应急响应案例&#xff08;不断更新中&#xff09;。 GitHub 地址&#xff1a;https://github.com/Bypass007/Emergency-Response-Notes 本文主要介绍Linux日志分析的技巧&#xff0c;更多详细信息请访问Github地址…

as将安卓应用打包_Android Studio打包生成apk的方法(超级简单哦)

释放双眼&#xff0c;带上耳机&#xff0c;听听看~&#xff01;打包文件是需要生成APK文件&#xff0c;其他人可以通过APK安装和使用&#xff0c;一般来说&#xff0c;包是指APK生成的发布版本&#xff0c;下文技术狗小编还介绍了Android Studio 超级简单的打包生成apk的方法&a…

Linux系统安全日志详解

日志对于安全来说&#xff0c;非常重要&#xff0c;他记录了系统每天发生的各种各样的事情&#xff0c;你可以通过他来检查错误发生的原因&#xff0c;或者受到攻击时攻击者留下的痕迹。日志主要的功能有&#xff1a;审计和监测。他还可以实时的监测系统状态&#xff0c;监测和…

帆软单点登录_电子表格FineReport教程:[20]CAS单点登录

若报表应用设置了权限&#xff0c;则需要将如下代码&#xff1a;package com.fr;import java.io.IOException;import java.io.PrintStream;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletExce…

【转】老男孩:Linux企业运维人员最常用150个命令汇总

近来老男孩发现新手学习Linux记不住命令&#xff0c;不会分类、不会筛选重点&#xff0c;胡子眉毛一把抓当然记不住了。 特别整理Linux运维最常用150个命令和大家分享&#xff0c;大家学习命令不用在盲目了&#xff0c;根据分类&#xff0c;然后逐步学习&#xff01; 命令 功…

mysql 不在另一张表_mysql查询在一张表不在另外一张表的记录

mysql查询在一张表不在另外一张表的记录问题&#xff1a;查询一个表(tb1)的字段记录不在另一个表(tb2)中条件&#xff1a;tb1的字段key的值不在tbl2表中&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#x…