Проект, над которым я работаю, использует n-уровневую архитектуру. Наши слои следующим образом:Образец загрузки бизнес-объекта
- доступа к данным
- Business Logic
- Хозяйствующие субъекты
- Презентация
Бизнес Логика низведет в слой доступа к данным, а также уровень представления вызовов вниз на уровень бизнес-логики, и все бизнес-объекты ссылаются на все.
Наши бизнес-сущности в основном соответствуют нашей модели данных 1-1. Для каждой таблицы у нас есть класс. Первоначально, когда была разработана структура, не было никакого отношения к управлению отношениями master-detail или child-parent. Таким образом, вся бизнес-логика, доступ к данным и бизнес-объекты ссылаются только на одну таблицу в базе данных. Как только мы приступили к разработке приложения, быстро стало очевидно, что отсутствие этих отношений в нашей объектной модели серьезно ущемляет нас.
Все ваши слои (включая базу данных) созданы из внутренней базы данных метаданных, которую мы используем для управления нашим внутренним генератором кода.
Вопрос в том, что является лучшим способом загрузки или ленивой загрузки отношений в наших сущностях. Например, предположим, что у нас есть класс person, который имеет отношение master-child к таблице адресов. Это отображается в бизнес-объекте как свойство коллекции Адресов на объекте Person. Если у нас есть отношения «один-к-одному», это будет отображаться как одно свойство объекта. Каков наилучший подход для заполнения и сохранения объектов отношений? Наши бизнес-сущности не знают уровня бизнес-логики, поэтому его нельзя сделать внутренне, когда вызвано свойство get.
Я уверен, что для этого есть какой-то стандартный вариант. Какие-либо предложения?
Кроме того, одно из предостережений заключается в том, что слой DataAcess использует отражение для построения наших объектов. Хранимые процедуры возвращают один результат selt на основе одной таблицы, и используя отражение, мы заполняем наш бизнес-объект, сопоставляя имена свойств с именами столбцов. Таким образом, объединение будет сложным.
ckramer - Вы можете вытащить информацию откуда-нибудь и опубликовать ее здесь, как выглядит этот шаблон? Я буду отмечать вас так же, как и тогда. – Micah 2008-10-01 03:18:33