2012-04-09 17 views
0

を問い合わせます。私はlinqをよく理解していない。LINQのは、私は私のように書いた。この方法を持っている非プリミティブ型

私はエラーを取得している:。

基地{System.SystemException} = { "タイプの定数値を作成できません 'Models.Area' は、のInt32、Stringとしてのみプリミティブタイプ( '、およびGuid ')はこのコンテキストでサポートされています。 "}

私が間違ってやっていることを教えてください。私は現在問題が何であるか理解できません。私が参加ラインを外してもそれは問題ありませんが、私は実際には、ユーザーエリア/地域(複数のエリアに所属することができます)からの請求書のみを持っていることを確認するために、その行が本当に必要です。基本的にこのクエリで間違ったことがありますか?

答えて

4

エンティティフレームワークは、メモリ内コレクションとの結合をサポートしていません。代わりにContainsクエリをプリミティブのコレクションで使用するようにクエリを再配線する必要があります。

また、EFは現在列挙型の値をサポートしていないため、整数値と比較する必要があります(InvoiceStatuses.Receivedenumの値でない場合、この部分は無視されます)。同等の結果になる必要があり、次のクエリアプローチとリードを組み合わせ

両方の修正ご参加:

int statusReceived = (int)InvoiceStatuses.Received; 
var areaIds = user.Areas.Select(x=> x.AreaId).ToArray(); 

var taskList = from i in _db.Invoices 
       where i.Status == statusReceived && areaIds.Contains(i.AreaId) 
       select i; 
関連する問題