Я разрабатываю приложение на C #
- Презентация (веб-сайт + гибкие приложения)
- Бизнес-логический уровень (может быть WCF для поддержки мульти-клиентских платформ)
- Уровень доступа к данным (с NHibernate)
Мы собираемся интегрировать наше решение во многие предсуществующие клиентские среды баз данных, и мы хотели бы использовать NHibernate в DAL. Мой коллега отметил, что генерация классов из клиентской БД (например, User или Image) с помощью NHibernate вызовет БЛЛ взорвать нам в лицо при каждом изменении БД!
Итак, вопрос в том, как мы можем предотвратить это?
Мы думаем о создании бизнес-объектов и отображении объектов NHibernate на эти BO (гум, это делает их DTO?) С помощью AutoMapper и предотвращает влияние изменений DAL на BLL. Так ли это?
Спасибо!
РЕДАКТИРОВАТЬ:
Чтобы лучше понять, чего мы пытаемся достичь, вам может понадобиться контекст:
Мы создаем приложение для хранения и обмена фотографиями во Flex для внешнего интерфейса и C # для внутреннего интерфейса, в основном для нашей компании, поэтому мы обрабатываем все аспекты кода и БД.
Но : этот продукт также можно купить по уровням, у которых в конечном итоге уже есть база данных с таблицей пользователей или таблицей изображений. Я думаю здесь о новом потенциальном клиенте, у которого есть таблица изображений с несколькими сотнями миллионов строк и добавление столбцов для нашей бизнес-логики не произойдет из-за слишком долгого изменения таблицы.
Даже если бы это было возможно (например, пользовательская таблица может быть изменена из-за меньшего количества строк), мы задаемся вопросом, как обрабатывать изменения структуры таблицы, не влияя на все наше решение каждый раз, когда нам приходится интегрироваться в базу данных уровня , от BLL до клиентского приложения во Flex!