注册

.net8项目从sqlserver迁移过来,使用EntityFrameworkCore访问数据库,在linq查询一个空白表时报“Dm.DmException:"6110,日期字符串长度太短"

ㅤ🇿 2025/01/25 345 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8_20241226_x86_win_64
【操作系统】:Windows 11 24H2
【CPU】:i9-12900K
【问题描述】*:
项目目前很多家医院使用,原先使用的是sql server数据库,已使用维护更新好几年了,最近要适配信创,所以准备使用达梦数据库。
主要依赖版本:
.net 8
Microsoft.EntityFrameworkCore 8.0.12
DM.Microsoft.EntityFrameworkCore 8.0.0.28188
image.png
数据库是使用以下两行命令使用 ef core 新生成的,所以所有的表都是空白的

dotnet ef migrations add dm_init dotnet ef database update

.net8 使用EntityFrameworkCore访问数据库,在linq查询一个空白表时报“Dm.DmException:“6110,日期字符串长度太短”
软件在启动时会做一些基础数据的初始化,先判断数据库有没有,没有的话插入。
执行到以下语句时报错:

_context.Languages.IgnoreQueryFilters().Any(l => l.TenantId == language.TenantId && l.Name == language.Name)

这里就是简单的查了下Languages表是否已存在对应的数据,却报报“Dm.DmException:"6110,日期字符串长度太短"
image.png
从日志里看这里的linq被转换成了

SELECT CASE
    WHEN EXISTS (
        SELECT 1
        FROM "AbpLanguages" AS "a"
        WHERE "a"."TenantId" IS NULL AND "a"."Name" = :__language_Name_1) THEN 1
    ELSE 0
END

image.png
这张表里有三个时间字段,在c#里定义的都是DateTime类型

public virtual DateTime? DeletionTime { get; set; }

ef core 生成的表字段是TIMESTAMP
image.png

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