我尝试从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?
答案 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();
由于这是一种解决方法,我宁愿将其发布到评论讨论中,但我没有代表:/