#linq #entity-framework #entity-framework-4
#linq #entity-framework #entity-framework-4
Вопрос:
У меня есть запрос с CASE в SQL, как я могу это сделать с Entity Framework?
DECLARE @SystemTypeId int
SELECT @SystemTypeId = [SystemTypeId] FROM [Properties] WHERE [Id] = @PropertyId
SET @RETURN_VAL =
CASE @SystemTypeId
WHEN 2 THEN (SELECT [Created] FROM [Assets] WHERE [Id] = @AssetId)
WHEN 3 THEN (SELECT dbo.GetAssetValueById([CreatedBy])
FROM [Assets]
WHERE [Id] = @AssetId)
WHEN 9 THEN (SELECT [LastModified]
FROM [Assets]
WHERE [Id] = @AssetId)
ELSE NULL
END
Ответ №1:
При использовании оператора Linq-to-Entities не будет генерировать для вас оператор CASE, кроме двоичного оператора CASE ? :
.
Вы можете либо запустить его в двух запросах: сначала получить SystemTypeId, затем выполнить соответствующий запрос.
Или вы можете обойти Linq и запустить необработанный SQL, что часто является лучшим подходом, если у вас сложный запрос.