2016-08-21 8 views
1

EF 6からEFコアに移行しようとしています。EFコア:マルチパート識別子 "m.Added "をバインドできませんでした

私は毎日、上の写真を返すSQLクエリにこのLINQのを持っている:

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 .Net SqlClient Data Provider: No column name was specified for column 1 of 'm2'. No column name was specified for column 2 of 'm2'. No column name was specified for column 3 of 'm2'. The multi-part identifier "m.Added" could not be bound. The multi-part identifier "m.Added" could not be bound. The multi-part identifier "m.Added" could not be bound.

どのように私はEFコアにこれを翻訳することができますか?

+1

「翻訳」は必要ありません。これはうまくいくはずです - これはEFコアのバグである可能性が高くなります。クエリビルドはまだ構築中です(https://docs.efproject.net/en/latest/efcore-vs-ef6/features.html)。 –

+0

tnx、どのようなideea私はこれを動作させることができますか?おそらく、EFチームがこれを追加するまでのいくつかの回避策ですか? – lambidu

+0

ええ、回避策。複数の簡単なクエリでデータを取得してみてください。 –

答えて

1

私は非常に単純な表現で、これと同じ問題が持っていた:それは回避策Iだとして

function DateTime GetItemDate(Item item) 
{ 
    return item.DateTime; 
} 

var dates = items.Select(GetItemDate).Distinct(); 

:私は、同等の機能ではなく、式を作成して渡すことでこれを回避まし

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

をコメントのディスカッションに投稿することをお勧めしましたが、担当者はいません:/

関連する問題