c# - 表和对象列表之间的 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();
解决方案
您无法将 EF Core LINQ 查询与本地列表连接,因为它无法转换为 SQL。最好先获取数据库数据,然后加入内存。
推荐阅读
- amazon-web-services - 如何获取用户的 AWS 电子邮件地址?
- html - 标题和元标记装饰(样式)
- html - 解决网格内容
- mysql - 替换 MySQL 中第 n 次出现的字符串
- matplotlib - Matplotlib 正确的纵横比图形大小
- sails.js - schemaName 不适用于sails-postgresql
- ios - Swift 中没有数据传递时的补全块语法
- javascript - 使用 postMessage 将短字符串值发送到 iFrame
- php - Google 日历中的开始日期和结束日期都相差 1 天
- c# - 如何根据 mvvm 数据移动窗口?