Модернизация библиотеки ручного доступа к данным - PullRequest
1 голос
/ 31 января 2011

Это веб-приложение, которое опирается на своего рода библиотеку доступа к данным (простые объекты данных и связанные объекты для выполнения над ними операций CRUD), которая генерируется непосредственно из базы данных.

То есть из таблицы Person

ID<br> Forename<br> Surname<br> DoBirth

вы получите сгенерированный класс Person с полями:

ID, Forename, Surname, DoBirth, набранный из их столбцов БД.

И помощникКласс PersonPersister

с

Create(Person p)  
Update(Person p)  
Delete(Person p)  

методами.

Это также создаст необходимые CRUD-спроки в базе данных.

Мне было неловко, когдаЯ начал с того, что кроме кратких заигрываний с nHibernate и MEF я привык вручную кодировать свой уровень доступа к данным.Все мои опасения, похоже, осуществляются сейчас, через год, когда мы находимся на другом этапе разработки с большой командой разработчиков, и трещины начали появляться.

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

Каждый раз, когда мы выпускаем релиз, мы много времени настраиваем приложение, dal и databse, чтобы оно работало.Часто это тот сценарий, в котором DAL был сгенерирован из базы данных dev, а затем применен к живой базе данных, которой, конечно, не хватает таблиц / sprocs и т. Д., Созданных во время разработки.

В эти моменты я часто нахожуЯ сам направляюсь на jobserve.com, хотя мне больше нравится работать над этим вопросом.

Идеи, которые у меня были, включают в себя модификацию генератора кода, чтобы он перезаписывал исходные файлы в явном проекте Visual Studio, работающем с DAL, - тогда их можно было бы отслеживать в CVS, а также редактировать вручную.У кого-нибудь есть положительный опыт такой стратегии?На данный момент единственным артефактом, который генерирует сборка, является dll, поэтому просмотр истории изменений невозможен.

Помимо использования ORM (управление не фанат - да, я знаю), каковы наши варианты, какнасколько рационализировать это, чтобы дать себе контроль?Нам по-прежнему нужен элемент автоматизации, но в настоящее время его количество неосуществимо.

Нам очень повезло, что у нас есть подписки MSDN, поэтому мы запускаем TFS 2010 с автоматическими сборками, последней версией Visual Studio и т. Д.и т. д., но из-за этого аспекта нашей среды разработки создается впечатление, что мы отстали на десятилетие или более.

Ответы [ 4 ]

3 голосов
/ 31 января 2011

Это кажется мне скорее проблемой для вашей стратегии развертывания, чем для стратегии разработки.Используете ли вы ORM или ваш текущий инструмент, он будет генерировать (если вы используете автоматическую генерацию) сущности из базы данных dev.В вашем развертывании необходимо убедиться, что все изменения в приложении распространяются через ваш QA и в ваши производственные системы, будь то приложение, база данных или какая-либо другая зависимость.

2 голосов
/ 31 января 2011

В прошлом я работал с инструментами генерации кода и использовал их для генерации кода шаблона, который был включен как часть проекта Visual Studio, а затем изменен вручную для соответствия требованиям.Это означало, что генерация кода была всего лишь шагом к экономии времени, а исходный код полностью контролировался версией.

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

2 голосов
/ 31 января 2011

Как насчет проекта базы данных, который поддерживает все ваши хранимые процедуры ...

Плюсы

  1. контроль версий БД
  2. Простое развертывание. Вам просто нужно указать, к какой базе данных он идет и одним щелчком мыши вы можете развернуть его ...
  3. Вы точно знаете, что меняется, как результат внедрения нового класса
  4. Весь код базы данных находится вместе с другой код и доступен из одна IDE, которая делает это так много проще отправить изменения сразу ..

Против

  1. Возможно, вам придется потратить время на перенести ваш подарок инфраструктура, которая создает хранимую что-то, что создает сохраненные файлы сценариев proc ... в основном весь код внутри создания / обновления / удаления Вы упоминали, должно быть написано снова.

и еще много плюсов и минусов, о которых вы будете лучше судить ...

Если вы рассматриваете возможность использования этой опции, вы должны посмотреть эти ссылки ниже

  1. Учебник для начинающих
  2. Пример проекта
1 голос
/ 20 марта 2014

Здесь есть две проблемы - ваш DAL и ваша стратегия развертывания.

Чтобы заняться развертыванием, вам нужно взглянуть на Свободные миграции

Недавно я реализовал его для клиента, у которого были похожие проблемы, и теперь они могут развернуть приложение, зная, что база данных будет автоматически обновлена ​​/ синхронизирована при необходимости (это дополнительная функция).

Вы можете использовать свободный API, встроенные сценарии SQL, встроенный SQL - все, что вам подходит. Вы также можете довольно легко включить переносчик в процесс автоматической сборки.

В этой статье рассказывается об опыте, накопленном одной компанией, и приводятся примеры кода, позволяющие подключить процесс обновления к запуску приложения.

...