C# EF6无法识别的Guid格式。当试图在集合中查找时

C# EF6无法识别的Guid格式。当试图在集合中查找时,c#,mysql,entity-framework,guid,C#,Mysql,Entity Framework,Guid,我在试图查找集合中的数据时遇到“无法识别的Guid格式”问题。 应用程序使用.NET4.5和EF6。我面临这个问题,因为我们从MsSql切换到MySql数据库 实体看起来像: public abstract class DomainEntity(){ public Guid Id { get; protected set; }; public bool IsActive { get; protected set; } public DateTime CreateTime

我在试图查找集合中的数据时遇到“无法识别的Guid格式”问题。 应用程序使用.NET4.5和EF6。我面临这个问题,因为我们从MsSql切换到MySql数据库

实体看起来像:

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`));
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`));
让大多数数据正常工作,但有时我会遇到“无法识别的Guid格式”的问题

该错误主要发生的地方如下所示:

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

public IDbSet<TEntity> CreateSet<TEntity>()
        where TEntity : class => base.Set<TEntity>();
公共IDbSet CreateSet() 其中tenty:class=>base.Set(); 我尝试了不同的解决方案来解决这个问题。 尝试将db中的Id从CHAR(36)切换到varchar(64),传递Id.ToSting()或向连接字符串添加'Old Guids=true',但没有结果

谢谢你的帮助

非常感谢您帮助我们找出问题所在


我的主要问题是ID的数据。从MsSql迁移到Mysql后,一些ID作为空字符串导入,否则在MsSql中它们存储为null。更新id的数据后(设置null,其中id=“”),所有操作都正常。

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

您的一个ID不是guid格式。@mjwills,感谢您的方法,我将检查表中的数据并返回结果。