1
私はEF4を使用しています。 SQLをLINQにEFに変換しようとしていますが、エラーが発生しています。私は、EFがデータベース内のSQLを作成して実行することを望んでいます(メモリ内のものではありません)。比較は整数であるプリミティブ型を使用しています。エラーを修正するにはどうしたらいいですか?私は現在のグループを構文に使用することを考えています。Entity Frameworkエラー: '..'型の定数を作成できません。プリミティブタイプのみ
SQL:
SELECT Restaurant.RestaurantID
,CASE WHEN FoodType.FoodTypeID IS NULL THEN NULL ELSE CustRating.Rating END AS Rating
FROM Restaurant Restaurant
LEFT OUTER JOIN CustRating CustRating
ON Restaurant.RestaurantID = CustRating.RestaurantID
LEFT OUTER JOIN FoodType FoodType
ON FoodType.FoodTypeID = CustRating.FoodTypeID
AND FoodType.FoodTypeName = 'Taco'
LINQ:(LinqPadでテスト)
var query =
from restaurant in Restaurants
from customerRating
in CustomerRatings
.Where(cr => cr.RestaurantID == restaurant.RestaurantID)
.DefaultIfEmpty()
from foodType
in FoodTypes
.Where(ft => ft.FoodTypeID == customerRating.FoodTypeID && ft.FoodTypeName == "Taco")
.DefaultIfEmpty()
select restaurant;
query.Dump();
エラーメッセージ:
Unable to create a constant value of type 'CustomerRating'.
Only primitive types ('such as Int32, String, and Guid') are supported in this context.
最初のアプローチは間違っていました。期待したクエリではありませんでした。たとえそれが機能したとしても、2つのクロスジョインでクエリーを取得します。 –