В каких ситуациях я должен использовать Entity SQL? - PullRequest
13 голосов
/ 04 декабря 2010

Мне было интересно, есть ли ситуации, которые более целесообразно использовать ESQL?

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

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

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

Ответы [ 3 ]

22 голосов
/ 04 декабря 2010

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

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

Кроме того, если вы знаете Entity SQL, вы будетевозможность выражать QueryViews и определяемые моделью запросы.

3 голосов
/ 06 декабря 2010

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

Обратите внимание, что эти два вопроса немного "старые", поэтому вы можете проверить некоторые данные на основе вашего текущего понимания EF4

1 голос
/ 04 декабря 2010

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

...