首页 > 解决方案 > 表和对象列表之间的 LINQ 连接失败

问题描述

我需要使用 C# .NET Core 3.0 中的对象列表中的值对表执行更新。我尝试使用 Join 方法,但收到此错误:

LINQ 表达式的处理

DbSet<Room>
    .Join(
        outer: __p_0, 
        inner: p => p.RoomId, 
        outerKeySelector: s => s.ruId, 
        innerKeySelector: (s, p) => new { 
            kuku = s, 
            riku = p
         })

'NavigationExpandingExpressionVisitor' 失败。这可能表示 EF Core 中的错误或限制。有关更多详细信息,请参阅链接

    public class Room
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Key]
        public int RoomId { get; set; }

        [StringLength(50, MinimumLength = 3)]
        public string RoomAddress { get; set; }
    }
    public class roomsForUpdate 
    {
        public int ruId { get; set; }
        public string ruName { get; set; }
    }

var roomList = new List<roomsForUpdate>() { new roomsForUpdate  { ruId = 1, ruName = "aa" }, new roomsForUpdate { ruId = 2, ruName = "bb" } };
var result = _context.Room.Join(roomList, p => p.RoomId, s => s.ruId, (s, p) => new { kuku = s, riku = p }).ToList();

标签: c#linq.net-core

解决方案


您无法将 EF Core LINQ 查询与本地列表连接,因为它无法转换为 SQL。最好先获取数据库数据,然后加入内存。


推荐阅读