Какой запрос Entity Framework лучше с LINQ или без Linq - PullRequest
0 голосов
/ 22 июня 2019

Существует два способа получения данных из базы данных.

Запрос № 1:

var Q = (from c in ctx.customers 
         where c.id = 10
         select new
                {
                     c.id,
                     c.Name,
                }).ToList();

Запрос № 2:

var Q = (from c in ctx.customers
         select new 
                {
                    c.id,
                    c.Name,
                }).ToList().Where(x => x.id = 10);

Я хочу знатькакой из них быстрее и лучше для многих записей.Пожалуйста, перечислите некоторые преимущества и недостатки обоих.Есть и другие запросы, которые могут быть такими же.

1 Ответ

1 голос
/ 22 июня 2019

Если вы используете с точки зрения синтаксиса, оба они одинаковы.

Если вы спрашиваете о дополнительном предложении where во втором, первое лучше и быстрее.Потому что он строит весь запрос, а затем запускает только один запрос к базе данных.Но на втором, как только вы попадете в первый ToList, он сгенерирует запрос к базе данных и получит все записи, потому что фильтр применяется после этого.

LINQ обычно строит ваш запрос и не выполняет каждый оператор в базе данных.Он строит ваш запрос и возвращает IQueryable.Когда вы добавляете условия, сортируете, выбираете операторы в IQueryable, он все равно возвращает IQueryable.Который не будет выполнять любой запрос.Как только вы используете методы, которые фактически получают записи из БД, Iqueryable, созданный в результате всех операторов, в конце концов выполняется, а записи возвращаются из БД.ToLIst - один из таких методов, который выполняет запрос в БД.ToArray, First, Single - примеры некоторых других, которые фактически выполняют запрос к БД.

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