EF6 无法识别的 Guid 格式。尝试在集合中查找时

EF6 Unrecognized Guid format. while trying to find in set

我在尝试查找集合中的数据时遇到 'Unrecognized Guid format.' 问题。 应用程序使用 .Net 4.5 和 EF6。自从我们从 MsSql 切换到 MySql Db.

后,我就遇到了这个问题

实体看起来像:

public abstract class DomainEntity(){
    public Guid Id { get; protected set; };
    public bool IsActive { get; protected set; }
    public DateTime CreateTime { get; set; }
    public DateTime ModifyTime { get; set; }
}

数据库表如下所示:

CREATE TABLE IF NOT EXISTS `MssDocumentsDb`.`dbo_Versionings` (
`Id` CHAR(36) UNIQUE NOT NULL,
`IsActive` TINYINT(1) NOT NULL DEFAULT 1,
`CreateTime` DATETIME(6) NOT NULL,
`ModifyTime` DATETIME(6) NOT NULL,
PRIMARY KEY (`Id`));

让大部分数据正常工作,但有时我会遇到 'Unrecognized Guid format.'

的问题

大多数错误发生的地方如下所示:

public virtual TEntity Get(Guid Id)
        => Id != Guid.Empty ? GetSet().Find(Id) : null;

创建集:

public IDbSet<TEntity> CreateSet<TEntity>()
        where TEntity : class => base.Set<TEntity>();

我尝试了不同的解决方案来解决这个问题。 试图将 db 中的 Id 从 CHAR(36) 切换到 varchar(64),传递 Id.ToSting() 或将 'Old Guids=true' 添加到连接字符串,但没有结果。

感谢您的帮助。

非常感谢 @mjwills 帮助找出问题所在。

我的主要问题是 ID 的数据。从 MsSql 迁移到 Mysql 后的一些 ID 被导入为空字符串,否则在 mssql 中它们被存储为 null。更新 id 数据后(在 id = '' 处设置 null)一切正常。

如果包含另一个空的 guid 列,请检查您的整个行记录。遗憾的是,该错误信息不是很丰富,例如,哪一列是空的,但它应该是一个 guid。