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

问题描述 投票:0回答:1

我正面临“无法识别的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',但没有结果。

感谢您的帮助。

c# mysql entity-framework guid
1个回答
0
投票

[非常感谢@mjwills为找出问题出处提供帮助。

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

© www.soinside.com 2019 - 2024. All rights reserved.