0

私は .net 4.0 で EF5 を使用しており、ユーザー、プロジェクト、関心の 3 つのエンティティがあります。FluentAPI を使用して User Many2Many Interest と Project Many2Many Interest を接続しました (リレーションごとに追加の 2 つのテーブルが作成されました)。すべてがうまく機能します。

私がやりたいことは、同じ興味を持つユーザーごとにすべてのプロジェクトをロードすることです。私は試した

Project ... 
  .Where(p => p.Interests
               .Any(t => user.Interests.All(i => i.Url == t.Url))); 

(関心には PK Url があります)。このクエリを実行すると、エラーが発生します

タイプ 'DAL.Models.Interest' の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。

適切なクエリは何ですか?

4

1 に答える 1

0

問題は、user.Interests.All(...) を SQL プロシージャに変換できないことです。

ただし、プリミティブ型 (Url) のリストを作成し、それと比較することはできます。

        var userInterests = user.Interests.Select(u => u.Url);
        var sharedProjects = m.Projects.Where( p => p.Interests.Select(i => i.Url)
                   .Any(pi => userInterests.Any(ui => ui == pi)));
于 2012-10-16T20:52:52.633 に答える