Лучший подход, где схема базы данных может быть изменена? - PullRequest
3 голосов
/ 22 мая 2011

Я знаю о различных методах (но не о знаниях), таких как генератор кода, ORM и т. Д., Я хочу знать, какой из них лучше всего подходит для изменения схемы базы данных (большие изменения) в течение периода разработки, например, добавления столбца в таблицудобавить таблицу в БД, изменить тип столбца и т. д. В настоящее время я работаю над проектом, в котором менялась эта схема каждый день. Я использую ручной процесс создания BLL, BOL и DAL, но у меня возникла проблема с управлением этими слоями после изменения схемы.БД.Пожалуйста, посоветуйте мне, как можно сделать это легко?

  1. , какую технику я должен использовать генератор кода, ORM, ручной подход или любой другой?
  2. производительность также будет хорошей.

Ответы [ 4 ]

3 голосов
/ 22 мая 2011

Дело не в программировании, а в управлении проектами. Менеджмент / клиент должен понимать, что изменение схемы данных так часто оказывает очень большое влияние на время разработки. Абсолютно не важно, какую технологию вы будете использовать, потому что даже с хорошим инструментом генерации кода вы можете в конечном итоге 4+ часа в день исправлять испорченный код, пропуская свойства, новые свойства, различные объекты и т. Д. Убедитесь, что вы показываете количество времени потратить на эту деятельность. Показывайте это регулярно. Как только руководство увидит, что из 20 млн. Драмов вы тратите 10 млн. Драмов на смену уровня доступа к данным (= нет добавленной стоимости для 10 млн. Драмов), они что-то с этим сделают.

С технологической точки зрения вы можете использовать все, что создает классы для вас:

  • Linq к SQL
  • EF с EDMX
  • EF с первым кодом и EF Power Tools CTP1 для создания карт для вас

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

Edit:

В зависимости от типа и сложности приложения вы также можете проверить ASP.NET Dynamic Data или MVC Scaffolding.

2 голосов
/ 22 мая 2011

Это похоже на проблему, которая хорошо подходит для генерации кода.

Некоторые ORM генерируют код для вас за кулисами, но обычно это только DAL.

Что-то вроде mygeneration может быть более подходящим для создания всех слоев.

Производительность будет полностью зависеть от того, как вы структурируете свои шаблоны кода.

Однако это не поможет с тем фактом, что вам придется повторять работу снова и снова.

1 голос
/ 23 мая 2011

Я также согласен с тем, что генерация кода является подходящей техникой здесь.Мой подход заключается в построении модели схемы вашей базы данных.Затем вы будете использовать структуру генерации кода для создания необходимого кода.Мой инструмент выбора - AtomWeaver , но вы также можете попробовать EMF или даже Xtext .

В среде IDE AtomWeaver вы создаете модель своегоСхема БД с использованием подхода моделирования ABSE .Такой подход позволяет строить модель по блокам (например, «таблица», «столбец», «ключ» и т. Д.).Для каждого «блока» вы определяете, что генерировать для вашего BLL, BOL или DAL.Каждый раз, когда вы вносите изменения, вы можете снова создавать заново.

Нет предопределенных генераторов кода для баз данных, а это значит, что вам нужно будет предоставить весь необходимый код для создания шаблонов, но по крайней мере выполучу 100% "твой код".Поскольку вы уже делаете это вручную, вы можете использовать этот код для «подачи» шаблонов генератора.

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

0 голосов
/ 22 мая 2011

ADO.NET Entity Framework хороший вариант.

...