2009-11-25 3 views
0

Я разрабатываю веб-приложение в C#, которое в основном ведет переговоры с базой данных. Я создал DTO для каждой таблицы в базе данных. Теперь для каждой таблицы существует собственный класс репозитория таблиц, который выполняет все сохранение и выборку, относящуюся к этой конкретной таблице, и я использую для этого хранимые процедуры.Проблемы с дизайном и т. Д.

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

Поэтому я не могу хранить данные в одном объекте DTO.

Если есть какие-либо основные операции, которые в основном выполняются на одной таблице, тогда все в порядке. Я могу вызвать объект dto table для обеих вставок и выборки из базы данных. Но когда соединения хранятся в хранимых процедурах, и в определенных ситуациях мы обновляем несколько таблиц.

Как мы должны проектировать приложение?

Пожалуйста, помогите

Благодарности

ответ

2

Похоже, вы можете переосмыслить имея DTO, который непосредственно соответствует каждой таблицы в базе данных.

Скорее, DTO должен соответствовать чему-то логичному в модели реального мира, которая используется за веб-сайтом. Так, например, объект Customer может иметь набор идентификаторов заказа внутри него, даже если они будут логически сохранены в двух таблицах в базе данных.

Нет ничего плохого (на самом деле это очень важно) иметь DTO, ссылающийся на другие DTO, так, например, вы могли бы иметь класс Customer, который указывает на список классов адресов.

Если все усложняется, вы, скорее всего, захотите рассмотреть вопрос о введении в этот момент другого слоя с истинными «объектами домена», которые отображаются на ваши DTO, которые по звуку являются «объектами сохранения».

+0

спасибо, Я использую архитектуру лука и на уровне инфраструктуры. У меня есть классы репозитория для каждой таблицы. Если я изменю настройку dtos на основе реальных ситуаций, тогда мне, возможно, придется настраивать репозитории. предположим, что текущий dtos будет присутствовать для каждой таблицы, но я создаю слой, который имеет комбинацию dtos, а затем фактически передает этот объект в функции классов хранилища для сохранения или выборки. Или вы можете предложить что-то лучше. к объектам устойчивости :(. – Rakesh

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