Я использую EF4.Я пытаюсь преобразовать SQL в LINQ to EF и получаю сообщение об ошибке.Я хочу, чтобы EF создавал и выполнял SQL в базе данных (а не делал вещи в памяти).Сравнение использует примитивные типы, которые являются целыми числами.Как мне исправить ошибку.Я думаю об использовании сейчас группы в синтаксис.
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.