簡體   English   中英

EF6 無法識別的 Guid 格式。 試圖在集合中找到

[英]EF6 Unrecognized Guid format. while trying to find in set

我遇到了“無法識別的 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 where id = '')一切正常。

檢查您的整個行記錄是否包含另一個空的 guid 列。 遺憾的是,該錯誤信息量不是很大,例如哪一列是空的,但它應該是一個 guid。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM