EF Core:多部分标识符"m.Added"不能被束缚

本文关键字:quot Added 不能 束缚 Core 标识符 EF 多部 | 更新日期: 2023-09-27 18:03:30

我正在尝试从EF 6迁移到EF Core。

我有这个Linq到SQL查询返回每日top照片:

var model = db.Photos
    .Where(m => m.Added <= startDate && m.Active == true)
    .GroupBy(m => new { Year = m.Added.Year, Month = m.Added.Month, Day = m.Added.Day })
    .Select(m => m.FirstOrDefault())
    .OrderByDescending(m => m.Added)
    .ThenBy(m => m.Rates.Sum(r => r.Points))
    .Take(10)
    .ToList();

但是同样的代码在EF Core上返回错误:

Core . net SqlClient Data Provider:没有为'm2'的列1指定列名。没有为'm2'的列2指定列名。没有为'm2'的第3列指定列名。无法绑定多部分标识符"m.Added"。无法绑定多部分标识符"m.Added"。无法绑定多部分标识符"m.Added"。

如何将其转换为EF Core?

EF Core:多部分标识符"m.Added"不能被束缚

我在一个非常简单的表达式中遇到了同样的问题:

var dates = items.Select(item => item.DateTime).Distinct();
// the multi-part identifier item.DateTime could not be bound

我通过创建并传递等效函数而不是表达式来解决这个问题:

function DateTime GetItemDate(Item item)
{
    return item.DateTime;
}
var dates = items.Select(GetItemDate).Distinct();

作为一种变通方法,我更愿意将此发布到评论讨论中,但我没有rep:/