EF Core:多部分标识符\" m.Added \"无法受约束

时间:2016-08-21 18:19:25

标签: c# entity-framework linq

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

我有这个Linq to SQL查询,它返回每日顶级照片:

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数据提供商:没有为&#39; m2&#39;的第1列指定列名。没有为&#39; m2&#39;的第2列指定列名。没有为&#39; m2&#39;的第3列指定列名。多部分标识符&#34; m.Added&#34;无法受约束。多部分标识符&#34; m.Added&#34;无法受约束。多部分标识符&#34; m.Added&#34;无法受约束。

我怎样才能将其转换为EF Core?

1 个答案:

答案 0 :(得分:1)

我用一个非常简单的表达式来解决同样的问题:

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();

由于这是一种解决方法,我宁愿将其发布到评论讨论中,但我没有代表:/