You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LINQ to Entities查询数据库时遇System.Guid转System.Object异常求助

问题解决:LINQ to Entities Guid转Object转换异常

问题原因

你的LINQ查询中,多条件Join使用了{t.AppFolderId, isLoggedInUser.ID_Role} Equals {r.AppFolderID, r.RoleID}这种匿名集合的写法,LINQ to Entities无法正确解析这种集合相等的逻辑,导致Guid类型被尝试转换为Object类型,触发异常。

修复方案

将多条件Join拆分为两个独立的相等条件,用And连接,替换原来的集合相等写法:

修改后的查询代码:

Dim GBItems As List(Of HomeTree) = (From t In db.ApplicationFolders
                                    Join r In db.AppFolderRoleConfig 
                                    On t.AppFolderId Equals r.AppFolderID And isLoggedInUser.ID_Role Equals r.RoleID
                                    Where t.ParentID = 0 AndAlso t.TypeID = 1 
                                    Select New HomeTree With {
                                        .ID_Key = t.ID_Key,
                                        .AppFolderId = t.AppFolderId,
                                        .Name = t.Name,
                                        .Active = t.Active,
                                        .Description = t.Description,
                                        .ParentID = t.ParentID,
                                        .TypeID = t.TypeID,
                                        .CanAdd = r.CanAdd,
                                        .CanDelete = r.CanDelete,
                                        .CanEdit = r.CanEdit,
                                        .CanList = r.CanList
                                    }).ToList()

说明

LINQ to Entities对多条件Join的支持要求在On子句中明确列出每个相等条件并通过逻辑运算符连接,而非通过创建匿名集合实现多字段匹配。这种写法能让EF正确识别每个字段的类型,避免不必要的类型转换操作。

内容的提问来源于stack exchange,提问作者Mckenzie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:57:38