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

第二步: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. C#中的as关键字

    你能进到这篇文章…… 首先你可能明白类似于 double num=0;int m=(int) num; 或者你明白 int m=209;String str=m.toString();或者说你甚至见过 ...

  2. lua tonumber

    [1]应用tonumber函数 local function test(telnum) , )) == ) -- 5000~5999公司预留号码 , ) == ' or isLen or isRese ...

  3. IP通信基础学习第七周(上)

    局域网的优点:具有广播功能,从一个站点可以方便的访问全网,局域网上的主机可共享连接在局域网上的各种资源:便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变:提高了系统的可靠性.可用性和生存性. ...

  4. IP通信基础学习第六周(下)

    硬件地址又称物理地址或MAC地址 以太网的MAC帧格式开始的标志是有11出现时,没电时自动结束 适配器的重要功能:进行串行/并行转换:对数据进行缓存:在计算机的操作系统安装设备驱动系统:实现以太协议 ...

  5. 自制操作系统Antz(10)——实现shell(上)

    我已经规范了系统代码风格,类似于按照linux分包,把各部分功能区分开了 Antz系统更新地址 Linux内核源码分析地址 Github项目地址 在之前的任务中,我们已经通过直接操作显卡驱动完成了简单 ...

  6. Servlet3.0与springmvc那些事

    官方文档:https://docs.spring.io/spring/docs/5.0.2.RELEASE/spring-framework-reference/web.html#mvc-servle ...

  7. 二分优化lis和STL函数

    LIS:最长上升子序列: 这个题我们很显然会想到使用dp, 状态设计:dp[i]代表以a[i]结尾的LIS的长度 状态转移:dp[i]=max(dp[i], dp[j]+1) (0<=j< ...

  8. SQL中IN与EXISTS的区别

    1.IN子句中的子查询只能返回一个字段,不允许返回多个字段,而EXISTS可以返回多个字段 2.IN返回的是某字段的值,而EXISTS返回的则是True或False,EXISTS子句存在符合条件的结果 ...

  9. snmp模拟器snmpsid使用

    snmpsim使用 安装 pip install snmpsim 简单使用 生成snmpwalk文件: snmpwalk -v2c -c 'password' -ObentU 218.200.x.15 ...

  10. 从事三年java开发后, 我打算转人工智能

    作为一个2015年参加java培训,2016年计算机科学与技术本科毕业后一直从事java开发的程序员来说, 做出这一步真的不容易, 可是我没赶上java最火的时候,反而渐渐感受到了java的没落, 目 ...