Я пытаюсь переписать запрос SQL в LINQ to Entities.Я использую LINQPad с типизированным текстовым текстом из собственной сборки, чтобы проверить его.
SQL-запрос, который я пытаюсь переписать:
SELECT DISTINCT variantID AS setID, option_value AS name, option_value_description AS description, sort_order as sortOrder
FROM all_products_option_names AS lst
WHERE lst.optionID=14 AND lst.productID IN (SELECT productID FROM all_products_option_names
WHERE optionID=7 AND option_value IN (SELECT name FROM brands
WHERE brandID=1))
ORDER BY sortOrder;
Запрос LINQ to Entities I 'Мы дошли до сих пор (что не работает из-за ошибки тайм-аута):
from a in all_products_option_names
where a.optionID == 14 && all_products_option_names.Any(x => x.productID == a.productID && x.optionID == 7 && brands.Any(y => y.name == x.option_value && y.brandID == 1))
select new
{
id = a.variantID,
name = a.option_value,
description = a.option_value_description,
sortOrder = a.sort_order,
}
Это ошибка, которую я получаю, когда запускаю приведенный выше запрос: An error occurred while executing the command definition. See the inner exception for details.
И внутреннее исключение: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Редактировать:
Я использую MySQL, и, вероятно, именно поэтому LINQPad не показывает мне сгенерированный SQL.
Версия SQL не истекает.
Редактировать 2:
Я решил проблему, полностью изменив запрос, поэтому этот вопрос сейчас неактуален.
Я отметил ответ Стивена как правильный, потому что он был ближе всего к тому, чего я пытался достичь, и его ответ дал мне идею, которая привела меня к решению.