EF или ADO.Net (SqlCommand & SqlConnetion) и эти показатели производительности - PullRequest
1 голос
/ 01 февраля 2012

Зависит от моих исследований и работы над EF (и LinQ) в течение 7 месяцев. Кажется, что EF (или LinQ) является хорошим решением для замены его традиционным решением (я имею в виду использование SqlCommand, SqlConnetion, DataReader и других ADO. Чистые компоненты)

Здесь у меня 3 вопроса:

  1. Независимо от EF и его производительности, я должен беспокоиться о том, чтобы заменить традиционное решение на EF полностью ?

  2. Посмотрите на эти 2 кода:


//#1
var UsersEnum = MyDataContext.Users;
return UserEnum.Where(obj => obj.age > 20);

//#2
return MyDataContext.Users.Where(obj.age > 20);

Чем отличаются эти коды буксировки? !!

Сначала включается, сначала извлекает все записи и сохраняет их в переменной, а затем фильтрует их по age , а затем возвращает остальные записи

А как насчет Второго? Извлекает ли все записи и затем фильтрует их? или он выбирает только отфильтрованные записи (не все)?!


3. Чем отличаются эти коды буксировки в производительности ? Есть ли разница? Или, как правило, кажется, что EF повышает производительность по сравнению с компонентами ADO.Net. Правильно?

Извините за мой плохой синтаксис, я новичок в английском и спасибо за ваше внимание. Любая идея и совет могут быть полезны.

1 Ответ

2 голосов
/ 01 февраля 2012

Независимо от EF и его производительности, стоит ли мне беспокоиться о том, чтобы полностью заменить традиционное решение на EF?

EF - это абстракция над ADO.СЕТЬ.Абстракции негерметичны.Вы утратите некоторые функции API ADO.NET, но если все ваши требования будут удовлетворены, то емкость EF будет в порядке.Некоторым примером, который вы пропустите в EF, являются пакетные вставки и пакетные запросы.EF не является хорошим решением для периодических операций, связанных с партиями производительности.Он хорошо работает с небольшим набором объектов.

Чем отличаются эти два кода?!

Нет разницы между двумя примерами кода в терминахфункциональности.Оба они не будут выдавать запросы к базе данных.Это функция LINQ, называемая Дифференциальное выполнение

Чем отличаются эти коды буксировки при использовании производительности?Есть ли разница?Или вообще кажется, что EF получает больше производительности по сравнению с ADO.Net Components.Это правильно?

Если в вашем приложении значительная задержка 20 мс, 30 м, тогда вам лучше использовать ADO.NET.Но EF имеет много других преимуществ по сравнению с ADO.NET

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