我最近将运行 Entity Framework Core 2.1.1 的应用程序升级到 Entity Framework Core 7.0.11。
以下部分代码(C#)在旧版本中运行良好:
var items = _dbContext.Contacts
.Where(c => (c.UserId == userId));
items = qitems.GroupBy(c => c.ContactId).Select(c => c.First());
items = items.OrderBy(c => c.CompanyName);
items = items.Skip(skip).Take(pageSize).ToList();
//以上操作是针对数据库上下文执行的
但是升级后,我收到此错误:
System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键“emptyprojectionmember”。
我期望相同的代码应该像以前一样运行。
这是一个分组和查询后的示例(抱歉,我没有采用您的代码来解决这个问题,请在最后找到解释)。
LINQ(到 SQL)
var serviceDues =
(from due in dbx.ServiceDues
group due by due.ServiceProviderId
into g
select g.OrderByDescending(g => g.DueDate).First()
).AsEnumerable();
if (selectedMonths != null)
{
serviceDues = serviceDues
.Where(x => selectedMonths.Contains(x.DueDate.Month));
}
LINQ(到实体)
var serviceDues = dbx.ServiceDues
.GroupBy(x => x.ServiceProviderId)
.Select(x => x.OrderByDescending(u => u.DueDate).First())
.AsEnumerable();
if (selectedMonths != null)
{
serviceDues = serviceDues
.Where(x => selectedMonths.Contains(x.DueDate.Month));
}
说明:
目标是选择指定月份的到期记录;过去、现在或未来。