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。
我在尝试查找集合中的数据时遇到 '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。