[英]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.