2012-01-07 3 views
2

Я являюсь веб-разработчиком уже девять лет. Мне нравится разрабатывать пользовательские CMS и чисто ручные кодированные веб-приложения.Перемещение с ADO.NET на ADO.NET Entity Framework

Я был в порядке с моделью доступа к данным ADO.NET, выписывая собственные SQL-запросы в базу данных и вызывая процедуры хранения через DBCommand.

Через 2 года я подумывал переехать в ADO.NET Entity Framework.

Я знаю, что есть много преимуществ с точки зрения производительности, но мне действительно не нравится/понимаю, как он работает с Entity Framework.

С точки зрения производительности я создал приложение, которое автоматически генерирует для меня код ADO.NET, поэтому я не трачу время, чтобы закодировать код ADO.NET.

Должен ли я перемещаться по платформе Entity Framework?

PS: Я производительность lover.:P

PS 2: Например, Как я могу реализовать Modified Preorder Tree Traversal для управления иерархических данных (например: Категории продуктов) в рамках Entity?

PS 3: Работаю с MySql сервера


Редактировать

После недолгого чтения, я понимаю, что ADO.NET Entity Framework замечательно.

Это дает нам много преимуществ, которые мы должны использовать для ручной работы или «копирования-вставки» в прошлом. Другим преимуществом, которое приходит с ним, является то, что он полностью независим от провайдера. Даже если вам нравится старый миниканизм ADO.NET, или вы такой динозавр, как я (: P), вы можете использовать инфраструктуру сущности, используя EntityClient, например SqlClient, MySqlClient, и использовать силу Entity-Sql, которая не зависит от поставщика.

Да, вы теряете некоторые характеристики. Но со всеми этими технологиями кэширования вы можете преодолеть это.

Как я всегда говорил: «C быстро, Ассамблея еще ... но мы используем C#/VB.NET/Java»

Спасибо очень чепчик за хорошие советы.

+2

Я могу получить пламя для этого, но я прыгнул в ORM около года назад. В прошлом месяце я принял решение снова отступить. Вы теряете много контроля над своим кодом, и любые пользовательские функции, которые не поддерживаются из коробки, смехотворно сложны ... время, которое вы сохраняете с самого начала, заканчивается тем, что его съедают, пытаясь получить то, что должно быть простыми для работы всего лишь немного. Для меня переезд в ORM был большой ошибкой, за которую я буду продолжать платить, пока не смогу заменить ее с помощью чистых, полностью контролируемых элементов управления ADO.NET. –

+0

Джереми ... я просто любил ваш ответ! Именно так я и боюсь. – Sanosay

+7

@JeremyHolovacs - Хотя верно, что некоторые фреймворки имеют ограничения, 99,9% случаев я вижу, что кто-то говорит об этом, потому что они не знают, как сделать что-то в рамках, а не потому, что фреймворк не позволяет этого. У вас много знаний в старом решении, и никто в новом ... конечно, вы будете разочарованы, если подумаете: «Я мог бы сделать это через 5 минут в бла-бла-бла-бла-бла-порядке», но это всего лишь ваша нехватка знаний, путь, а не инструмент. –

ответ

1

Выбор ORM не изменяет вашу модель данных в большинстве случаев. Вы можете использовать те же самые методы, которые вы использовали, но теперь используете их в коде, а не в SQL.

В вашем примере MPTT, вы могли бы сделать то же самое, но это будет выглядеть, как это в случае дерева продовольственных товаров, где корневые элементы слева значение 1, и правильное значение 20.

var query = from f in food where lft > 1 and rgt < 20 select f.name; 

Более того, если вы обнаружите что-то, что вы не можете сделать очень хорошо в ORM, вы всегда можете просто использовать ORM для вызова sproc, который делает то, что вам нужно в SQL.

Фактически, даже если я не использовал ORM для сопоставления таблиц, я все равно использовал бы его для вызова своих sprocs, потому что он автоматически создаст весь код оболочки, параметризует запросы, сделает все это безопасным, и восстановить его в объект передачи данных.Это позволяет записывать много шаблонов.

2

Это зависит.

ORM работают хорошо, когда вы вынуждены сохранять граф объектов в реляционном хранилище. Лучшим вариантом будет использование базы данных объектов. Таким образом:

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

Если у вас уже есть стратегия уровня данных, и вам не нужно тратить много времени, используя ее, и вы чувствуете, что все в порядке, тогда ответ также прост: Вам не нужен ORM., с одним простым "но" ...

Вы не можете предвидеть все преимущества/недостатки, пока не попробуете. И никто не имеет вашего ума и ваших проектов. Таким образом, лучшим ответом будет: Попробуйте сами и подумайте.

0

Чтобы ответить хотя бы на один аспект производительности, EF будет генерировать параметризованные запросы, что хорошо для производительности. Параметрированные запросы позволяют db сохранять планы выполнения и dba для оптимизации планов, если это необходимо. В противном случае большинство запросов обрабатываются db как совершенно новые, и поэтому каждый раз он создает новый план выполнения.

+0

Параметризированные запросы? – Sanosay

+0

@Sanosay: да, посмотрите, как их создать вручную: http://msdn.microsoft.com/en-us/library/bb738521.aspx –

+0

все мои запросы параметризуются с помощью классического кода ADO.NET. Я думаю, это defacto, но я думал, что это было для безопасности. – Sanosay

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