Какой эффективный способ получения данных из БД с использованием LINQ To SQL или LINQ To Entities? - PullRequest
0 голосов
/ 10 августа 2009

Когда вы запускаете Linq to Sql или Linq to Entites, чтобы получить список записей, он запускает запрос, чтобы выбрать все поля из таблицы. Это эффективное решение. Допустим, я запускаю этот LINQ

dim lstCustomers = from c in db.Customers select c

он запускает запрос, чтобы получить все поля из таблицы, нужны ли мне все поля или нет. Я использую asp.net с MVC, поэтому я должен написать этот запрос в поле зрения (где мне нужно только CustomerID и имя)

    dim lstCustomers = from c in db.Customers _
                       select new Customer with { c.CustomerID, c.Name }

Если мне нужно использовать второй запрос, то в чем преимущество LINQ и Entity Framework? Это можно сделать с помощью SQL-запроса (с другим синтаксисом)

Кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 10 августа 2009

Прежде всего, запросы LINQ оцениваются лениво. Это означает, что одна строка ничего не делает, кроме самой себя, поэтому я предполагаю, что вы фактически повторяете результаты с For Each.

Ответ на ваш первый вопрос - да, все поля извлекаются из базы данных с первым утверждением.

Да, но для непосредственного использования SQL вам придется вручную создавать классы сущностей, вручную извлекать данные, используя SqlDataReader или что-то еще, чтобы достичь уровня абстракции, который LINQ предоставляет в этой строке. Это еще много работы от вашего имени. С LINQ to SQL вам даже не нужно явно писать код, чтобы открыть соединение с базой данных.

0 голосов
/ 08 ноября 2016

на самом деле linq имеет различные наборы преимуществ по сравнению с написанием обычных запросов SQL:

если вы написали sql запросы, то перегружены шаги:
1. вам нужен класс соединения sql
2. вам нужна команда sql или sqldataadapter.
3. затем вам нужен контейнер, такой как набор данных и набор данных.

поэтому при использовании linq вам не нужны все эти шаги. просто напишите запросы, как вы написали выше.

также если вы написали что-то неправильное в вашем sqlquery, тогда нет ошибки времени компиляции. Ошибка генерируется только при выполнении запроса во время выполнения.
но в отличие от SQL-запросов, linq выдает ошибку времени компиляции.

Кроме того, linq является лучшим из коллекций со строгим шрифтом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...