Для меня это вторая натура - собрать какой-то сложный код обработки набора SQL для решения различных вопросов модели предметной области. Тем не менее, тенденция больше не касается SQL. Существует ли какой-либо шаблон ссылки или инструмент преобразования, который помогает преобразовывать различные шаблоны SQL в синтаксис Linq?
Я бы искал способы кодирования таких вещей, как следующий код: (здесь есть подзапрос):
SELECT * FROM orders X WHERE
(SELECT COUNT(*) FROM orders Y
WHERE Y.totalOrder > X.totalOrder) < 6
(Возьмите пять самых высоких заказов с побочными эффектами)
В качестве альтернативы, откуда вы знаете, что Linq выполняется как один оператор без использования отладчика? Я знаю, что вам нужно следовать перечислению, но я бы предположил, что просто где-то ищите шаблоны.
Это с сайта MSDN, который является их примером изменения SQL. Я, вероятно, ошибаюсь, но я не думаю, что это использует обработку множества на сервере (я думаю, что он тянет оба набора локально, тогда берет разницу, которая была бы очень неэффективна). Я, вероятно, ошибаюсь, и это может быть одним из шаблонов в этой ссылке.
Пример разницы SQL:
var differenceQuery =
(from cust in db.Customers
select cust.Country)
.Except
(from emp in db.Employees
select emp.Country);
Спасибо
- Обновление:
- 101 образец Microsoft Linq в C # - более близкое средство построения linq в шаблоне для создания необходимого SQL. Я буду публиковать больше, как я нахожу их. Я действительно ищу методологию (шаблоны или инструмент преобразования) для преобразования SQL в Linq.
- Обновление (sql из разностного паттерна Microsoft в Linq):
SELECT DISTINCT [t0].[field] AS [Field_Name]
FROM [left_table] AS [t0]
WHERE NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [right_table] AS [t1]
WHERE [t0].[field] = [t1].[field]
))
Это то, что мы хотели, а не то, что я ожидал. Итак, это один шаблон для запоминания.