2010-12-04 2 views
12

Мне было интересно, есть ли ситуация, более целесообразная для использования ESQL?В каких ситуациях я должен использовать Entity SQL?

Как правило, я нахожу, что ESQL расстраивает (особенно со всеми специальными случаями, когда вам нужно полностью квалифицировать тип сущности) & возможно, что-либо, что делается с помощью ESQL, можно выполнить с помощью SQL или LINQ.

Но мне было интересно, в тех ситуациях, когда ESQL лучше подходит для решения или будет иметь конкурентное преимущество по сравнению с использованием SQL или LINQ (либо проще/быстрее кода, или более высокой производительности и т.д.)

Так , какой компромисс здесь? Когда лучше использовать каждый из трех подходов при опросе над EF4?

ответ

22

Я считаю, что ESQL быть хорошим для краевых случаев, например:

  1. Где это просто очень трудно выразить что-то в LINQ.
  2. Для строительства очень динамических поисков.
  3. Если вы хотите использовать специфичную для базы данных функцию, предоставляемую поставщиком, который вы используете.

Кроме того, если вы знаете Entity SQL, вы сможете выразить QueryViews и Model-Defined Queries.

+3

+1 Спасибо, Julie, мы надеемся увидеть вас здесь больше :) – 2010-12-05 21:00:28

1

Так же, как то, что упомянуто julie. Esql требуется для записи определенных функций, которые в свою очередь могут использоваться через запросы LINQ to Entities. В большинстве случаев вы будете использовать LINQ для Entities. Еще один случай, когда вы не можете использовать LINQ TO Entities для нас, когда вы хотите создавать запросы с помощью функций хранилища, будь то buit in или UDF. В этом случае esql - ваш единственный способ в EF1, но в EF4 вы можете использовать его функции, чтобы выявить те функции, которые будут использоваться в LINQ. О производительности, esql работает лучше. но вы можете предпочесть производительность с помощью Linq с повышением производительности с помощью esql.

3

Я столкнулся с этими довольно похожими вопросами (которые не появлялись, когда я печатал мой, ранее) на стек над потоком, я думаю, что они имеют более глубокие обсуждения (хотя T-SQL не упоминается много, но это своего рода довольно очевидно, хотя):

Обратите внимание, что эти два вопроса немного «старый», чтобы вы могли проверить некоторые данные основаны на текущем понимании EF4

Смежные вопросы