注册

使用EFCore.Dm3.1时的三个问题

飞羽流星 2021/08/06 1251 5

【DM版本】: DM 8.1
【操作系统】:Windows 10
【CPU】: Intel® Core™ i5-7500 CPU @ 3.40GHz
【问题描述】:
背景:我们此前有一个MySQL(8.0)数据库,在项目中使用EFCore3.1访问数据。现准备使用数据库迁移功能(DTS)将MySQL数据库架构迁移至达梦数据并继续使用EFCore3.1访问数据时发现了一些问题。

  • 1.在进行数据迁移时,所有包含了DATETIME(TIMESTAMP)类型的表的数据全部都迁移失败了,错误信息是
错误号:   6006

错误消息: 不支持该数据类型

---------------------------------
CREATE TABLE 
****
"SOMECOLUMN" TIMESTAMP(0),
****
  • 2.在EFCore字段映射定义中使用.HasColumnType定义数据类型时,varchar类型的长度必须按"字节数"而非"字符数"声明,否则映射时会出现这样的异常信息。
    image.png
    数据库配置:
    image.png
    表字段:
    image.png
    代码中使用.HasColumnType("varchar(36)")会出现上述异常,但使用.HasColumnType("varchar(144)")不会报错,去掉.HasColumnType也不会报错。
  • 3.TEXT类型通过EFCore查询结果赋值到属性中会丢失第一个字符
    对象属性:
    (此时字段映射包含.HasColumnType("text"))
    image.png
    同一对象的字段:
    image.png
    image.png
    image.png
    VARCHAR类型字段不受影响。

不知道是bug还是别的什么原因,希望得到解答。

补充demo数据:
MySQL数据库转储(仅结构,包含一个initdata的存储过程可用于初始化数据)
test.sql

测试项目Demo的cs文件,不包含project文件,新建.net core 3.1控制台项目并引用相关库
(DmProvider 1.1.0, Microsoft.EntityFrameworkCore.Dm 3.1.0, Pomelo.EntityFrameworkCore.MySql 3.2.6)
cs files.zip

问题2无法重现,这个问题发现仅在某一数据库上出现异常,其他数据库表现正常。我正在排查其他原因。

回答 0
暂无回答
扫一扫
联系客服