C# EF6无法识别的Guid格式。当试图在集合中查找时
我在试图查找集合中的数据时遇到“无法识别的Guid格式”问题。 应用程序使用.NET4.5和EF6。我面临这个问题,因为我们从MsSql切换到MySql数据库 实体看起来像: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
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,感谢您的方法,我将检查表中的数据并返回结果。