在查询单个结果时,如果关系是多对多的,则EF Core 7需要使用集合返回类型,否则会出现以下错误信息:
InvalidOperationException: The LINQ expression could not be translated because it contains a collection parameter element.
解决这个问题需要在查询中使用ToList或ToListAsync方法将结果转换为一个集合,即使只返回一个结果。以下是一个示例代码:
var result = await _context.FirstEntity
.Include(fe => fe.ManyToManyEntity)
.ThenInclude(mte => mte.SecondEntity)
.Where(fe => fe.Id == id)
.SelectMany(fe => fe.ManyToManyEntity)
.FirstOrDefaultAsync();
return new List { result };
示例代码中使用ToList方法将结果转换为一个集合,即使结果只包含一个对象。注意,使用集合返回类型可能会影响性能和内存消耗,应该在实际应用中进行评估和测试。