第一步:找到下图两个组件,卸载。

第二步:NuGet下载下图组件。

第三步:在连接数据库OnConfiguring方法处,做如下修改:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
optionsBuilder.UseMySQL(config.GetConnectionString("DefaultConnection"));
}

第四步:映射的字段属性。

有三个字段类性需要重点说一下 GUID、DateTimeOffset、bool

1. GUID类型在SQLServer能用,却不能被MySql使用,所以所有的GUID类型的字段属性在换数据库的时候,MySql表的此字段都要指定变更为varchar类型。在代码中 .NET的string对应MySql数据库的varchar,所以在代码中映射时如下:

public class TestMap : EntityMappingConfiguration<TestEntity>
{
public override void Map(EntityTypeBuilder<TestEntity> builder)
{
builder.ToTable("Base_Test").HasKey(c => c.TestId);
builder.Property(c => c.TestId).HasColumnName("TestId").HasColumnType("string");
builder.Property(c => c.IsDeleted).HasColumnName("IsDeleted").HasColumnType("bit");
builder.Property(c => c.CreateDateTime).HasColumnName("CreateDateTime");
}
}

若不加.HasColumnType("bit")则会报如下图的错误。

(Unable to cast object of type 'System.String' to type 'System.Byte[]'.)

2. DateTimeOffset类型在SQLServer能用,却不能被MySql使用,所以所有的DateTimeOffset类型的字段属性在换数据库的时候,MySql表的此字段都要指定变更为DateTime类型。

public class TestMap : EntityMappingConfiguration<TestEntity>
{
public override void Map(EntityTypeBuilder<TestEntity> builder)
{
builder.ToTable("Base_Test").HasKey(c => c.TestId);
builder.Property(c => c.TestId).HasColumnName("TestId").HasColumnType("string");
builder.Property(c => c.CreateDateTime).HasColumnName("CreateDateTime");
}
}

3. 所有的bool类型的字段属性在换数据库的时候,可指定变更为bit类型。在代码中 .NET的 bool对应MySql数据库的bit,所以在代码中映射时如下:

public class TestMap : EntityMappingConfiguration<TestEntity>
{
public override void Map(EntityTypeBuilder<TestEntity> builder)
{
builder.ToTable("Base_Test").HasKey(c => c.TestId);
builder.Property(c => c.TestId).HasColumnName("TestId").HasColumnType("string");
builder.Property(c => c.IsDeleted).HasColumnName("IsDeleted").HasColumnType("bit");
builder.Property(c => c.CreateDateTime).HasColumnName("CreateDateTime");
}
}

若不加.HasColumnType("bit")则可能会报如下图的错误。

(System.InvalidOperationException:“No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.”)

若程序中定义的字段属性与数据库表中的字段属性对应不上,则可能会报如下图的错误。

(Unable to cast object of type 'System.String' to type 'System.Byte[]'.)

至此,换库完成。

已解决,但不理解的问题:var test = db.Test.Any(i => i.IsDelected==true)  会报如下错误:

(System.InvalidOperationException:“No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.”)

解决方法:先ToList()即可,

var test = db.Test.ToList().Any(i => i.IsDelected==true)

.NET SQLServer数据库转MySql的更多相关文章

  1. sqlserver数据库导入Mysql数据库问题

    近来遇到一个问题,之前的项目用的是SQLServer数据库,但是现在要换成MySQL数据库,所有整理了一些数据导入的步骤,供需要的人参考! 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: ...

  2. Navicat Premium 将sqlserver 数据库 导入mysql 中

    1.新建 MySQL 数据库  2.  3 4 5 6 7 8 9一直点击下一步 10 成功

  3. 【项目经验】navicat工具 SQLServer数据库迁移MySQL

    新近领了一个任务,就是把SQL Server的数据库迁移到My Sql上,经过查资料,圆满完成任务.分享一下流程. 1.首先,在自己的My Sql数据库上新建一个数据库. 2.打开新建的My Sql数 ...

  4. SQLServer数据库转换成MySQL数据库

    由于工作需要,系统原先的SQLServer数据库要转换成MYSQL数据库,所以这两天就一直在查阅这方面的资料.最开始,我尝试从SQLServer中导出SQL文件,然后导入到MYSQL数据库中,发现报错 ...

  5. 怎样将Sqlserver数据库转成mysql数据库

    手上有一个网站之前是用asp.net做的,所使用的数据库是sqlserver,现在打算用PHP+MYSQL架构.因原来的站点有一定排名,直接改版的话,会导致产生很多错误页,网站排名和收录结果要恢复过来 ...

  6. SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点

    mysql数据库表及数据准备语句: USE test; DROP TABLE IF EXISTS `teacher_table`; DROP TABLE IF EXISTS `student_tabl ...

  7. EntityFramework 多数据库链接,MySql,SqlServer,Oracel等

    环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一 ...

  8. SQLServer 远程链接MySql数据库详解

    SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...

  9. spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置

    spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...

随机推荐

  1. PIL模块

    处理图片的模块 打开图片 im=Image.open("1.png") 创建字体对象 先要字体文件 font = ImageFont.truetype('C:\\WINDOWS\\ ...

  2. DIJKSTRA 临接表

    #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> ...

  3. Java-对象及变量的并发访问小结

    1)多线程环境下,方法内的变量是线程安全的 2)多个线程同时处理一个实例,这个实例内的变量是不安全的 3)不同线程中注入同一个类的不同实例,实例中的变量是安全的 4)Synchronized获取到的锁 ...

  4. flask 异步发送邮件

    异步发送邮件 当使用SMTP的方式发送电子邮件时,如果你手动使用浏览器测试程序的注册功能,在提交注册表单后,浏览器会有几秒钟的不响应.因为这时候程序正在发送电子邮件,发信的操作阻断了请求--响应循环, ...

  5. 第一个Python游戏窗口

    不废话,撸起袖子就是干. import pygame import sys pygame.init(); caption=pygame.display.set_caption("Python ...

  6. QT 添加外部库文件

    LIBS += D:\Code\Opengltest\OpenGL32.Lib D:\Code\Opengltest\GlU32.Lib LIBS += OpenGL32.Lib GlU32.Lib  ...

  7. latch releae overview

    1. MainFsmStates add MAIN_FSM_LATCH_OPEN_FOR_DOOR_CLOSE 2. mb_PcuTriggerReInit = TRUE; /* start PCU ...

  8. ASUS RT-N16 使用OpenWrt 安装 ss记录

    本文用于记录一下使用ASUS RT-N16 使用OpenWrt 安装 shadowsocks的过程. 前后一共折腾了一个星期,原先使用的是tomato固件,但是在配置iptables的过程中,执行 r ...

  9. Linux退出状态码

    命令成功结束 一般性未知错误 不适合的shell命令 命令不可执行 没找到命令 无效的退出参数 +x 与Linux信号x相关的严重错误 通过Ctrl+C终止的命令 正常范围之外的退出状态码

  10. Android中自定义广播的实现

    今天尝试了自定义的广播,说是自定义的广播其实质就是自己编写一个类继承broadcastreceiver类,然后再onreceiver方法中实现某些功能,在这个过程中我们可以自定义我们要发出的广播,可以 ...