我正面临“无法识别的Guid格式的问题。”同时尝试在集合中查找数据。.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`));
并使大多数数据正常工作,但有时我会遇到“无法识别的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>();
我尝试了不同的解决方案来解决此问题。试图将db中的Id从CHAR(36)切换到varchar(64),传递Id.ToSting()或向连接字符串添加'Old Guids = true',但没有结果。
感谢您的帮助。
[非常感谢@mjwills为找出问题出处提供帮助。
我的主要问题是Ids的数据。从MsSql迁移到Mysql后的某些ID作为空字符串导入,否则在mssql中将它们存储为null。在更新ID的数据(设置为null,其中id =”)之后,所有的数据都可以正常工作。