|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
||||||||||||||||
Связанные данные в трехуровневой архитектуре22.09.2019, 23:23. Показов 8730. Ответов 150
Метки нет (Все метки)
Как подтягивать связанные данные в трехуровневой архитектуре?
У меня есть три уровня данных. На уровне DAL там понятно как обращаться к связанные данным, там есть связи. Вот на пример в DAL заказ у меня выглядит так
Как вариант переносить связи на каждый уровень. Какие еще варианты?
0
|
||||||||||||||||
| 22.09.2019, 23:23 | |
|
Ответы с готовыми решениями:
150
Удалить связанные данные Как создать приложение с трехуровневой архитектурой? Поделитесь информацией о приложениях с трёхуровневой архитектурой |
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||
| 26.09.2019, 00:48 | ||
|
если про номер заказа , то можно Item.Code => Шифровать(ид.клиента+время.заказа) - это почти уникально , шансов на то , что один и тот же клиент сможет сделать более одного заказа за долю секунды почти нет (если только не программой , но тогда просто уведомить , что заказ уже есть) если про номер товара - то обычно у реального товара он уже есть по накладной , если представить что нет - у нас же сказочный проект ) ? - тогда можно генерировать номер по параметрам товара Item.Code => Шифровать(код страны , номер бренда , категория , номер цвета). В общем пофантазируйте , поскольку требования надуманные то и реализация может быть какой угодно.
0
|
||
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 26.09.2019, 13:36 [ТС] | |
|
sau, спасибо, понял. Ну а то, что я это делаю прям в сервисе, где по задумке должна быть "перегонка" данных из модели в модель, это нормально? или это нужно выносить куда-то бизнес объекты?
0
|
|
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||
| 26.09.2019, 13:44 | ||
|
0
|
||
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 26.09.2019, 17:22 [ТС] | |
|
sau, как правильно выводить заказ и связанные с ним элементы, через include? Я тупа в таблице OrderItem по orderID вывел. Это рабочий вариант?
0
|
|
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 26.09.2019, 17:41 | |
|
А кто с этой карточкой будет работать ? - если оператор , то для него идентификаторы записей из БД тут будут лишние , должны быть информативные сведения - наименование товара (код) , имя заказчика , читаемый статус заказа. , оператор по этим данным общается с клиентом , и ему , например , нужно быстро поменять состав заказа если клиент передумал.
По этому , как правильно и в каком виде - зависит от потребностей. Какая цель у редактирования ?
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|||
| 26.09.2019, 18:26 [ТС] | |||
|
sau, Да, будет работать оператор. это понятно, что вместо iD должны быть нормальные данные. И в статусе заказа должен быть dropdown с выбором статуса, я просто до этого ещё не дошёл, но вообще эта тема и создавалась по этому вопросу)
Добавлено через 5 минут Добавлено через 7 минут sau,
0
|
|||
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 26.09.2019, 20:14 | |
|
Cherry_Pie, ну так а что вам мешает сделать доменную модель ?
- ее и маппируйте на модель представления.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|||||||||||
| 26.09.2019, 20:19 [ТС] | |||||||||||
|
sau, Так а как ее делать? С этого я начал эту тему)
вот есть в DAL модель БД
Добавлено через 1 минуту sau, В интернете везде Domain = моей DTO, просто кто-то ее называет DTO, а кто-то Domain. А смысл один и тот же
0
|
|||||||||||
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||
| 26.09.2019, 20:39 | ||
|
, а dto - анемичная модель удобная для передачи данных , каких то частей доменной модели в процессе обмена информацией между теми или иными сервисами , либо для сохранения состояния долгоиграющих обьектов в том или ином хранилище. , у Вас могут быть 10-ки разных дто для разных целей. У Вас обе модели не являются доменными сущностями , содержат какие то индентификаторы привязанные к хранилищу , это просто две разные дто для хранения данных.
0
|
||
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 26.09.2019, 20:50 [ТС] | |
|
sau, Так, получается так.
Я из DAL с помощью сервисов передаю в данные в DTO где храняття такие же поля с IDшниками? Потом из DAL передаю в Domain. из domain передаю во View? Можете на примере одной(например товара) сущности расписать цепочку от модели БД до модели представления?
0
|
|
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 26.09.2019, 21:03 | |
|
Что бы было понятнее , бизнес логика так или иначе оперирует какими то сущностями , т.к логика не может оперировать воздухом. , в результате описывается какой то процесс , поведение , результат действия.
оформление заказа или изменение номера заказа - это не просто редактирование поля , это процесс, которая может быть простым а может быть и сложным - согласования , проверки , уведомления , растянутость во времени = бизнес логика. для воплощения процесса зачастую нужно гонять данные между подсистемами в инфраструктурном слое , обмениваться данными между внешними службами - тут делаем dto , они будут разные для тех или иных случаев , и сохранение в бд лишь один из частных сценариев, в то время как построение концептуальной модели предметной области никак не зависит от инфраструктуры и сервисных служб с их требованиями к транспортировке данных. У Вас речь идет о простом приложении , с архитектурой по типу view-data , когда данные из БД напрямую транслируются интерфейсу и обратно. , тут собственно для реализации целей редактирования ничего не нужно , берете репозиторий , получаете от него данные , маппируете их на то или иной представление = готово , тоже самое обратно. Cupko, смотря что под id понимать , если это как у Эрик Эванса идентификатор сущности - т.е атрибут идентификации обьекта в реальном мире , такой как фио например - то разумеется это атрибут доменной модели. если мы говорим об идентификаторе хранилища , или идентификаторе сессии , или любых других идентификаторах которые могут быть в транспортных обьектах - то Вы не сможете их все уместить в доменной модели да и нелепо они будут там смотреться , эти идентификаторы не имеют никакого отношения к бизнесу и никак не юзаются в бизнес процессах , это чисто технические поля , которые могут меняться в зависимости от системы транспорта или технических условий для хранения данных.
0
|
|
|
|
|
| 26.09.2019, 21:07 | |
|
sau, я понимаю о чем вы. Я конкретно о практике.
Это всё хорошо, конечно. Чистая доменная модель - это поддерживаемость, ясность кода и красота. Тут вопрос в другом: насколько накладные расходы на отсутствие суррогатных ключей будут эту всю поддерживаемость улучшать. С учетом того, что какой-нибудь EF (в проекте с EF) требует наличие этого суррогатного ключа. Не считая моментов с производительностью баз. В целом, для приложения.
0
|
|
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||||
| 26.09.2019, 21:08 | ||||
|
Cherry_Pie, да не заморачивайтесь вы с терминологией так, со временем все разложится по полкам.
А то читаешь это все - "DAL туда, Domain обратно, c помощью сервисов" Голова закружится ![]() Вот берете любую статейку по DDD и смотрите:
Ага, точно:
Читаем дальше:
Ах да, ведь у нас еще есть и Domain Logic. А это все реализуется в виде сервисов в отдельной сборке. Итого физически весь домен валяется в двух сборках: 1. CompanyName.ApplicationName.Domain - сюда пихаем все доменные модели (сущности из БД, вьюмодели, Dto-хи различного типа/назначение) 2. CompanyName.ApplicationName.Core - сюда вся бизнес-логика - основная и вспомогательная (даже маппинг). Хорошая архитектура, между прочим, получается.
0
|
||||
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 26.09.2019, 21:10 [ТС] | |
|
Cupko, sau, Может зайдем в скайп на совещания?))
0
|
|
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 26.09.2019, 21:11 | ||
|
0
|
||
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||
| 26.09.2019, 21:14 | ||
|
IamRain, а это смотря у кого читать определения )
все таки есть эталоны , а есть статейки непойми от кого со своей собственной интепретацией и видинием.
0
|
||
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 26.09.2019, 21:16 | |
|
но мы не будем сейчас тут усложнять конечно , все таки не энтерпрайз пишем.
0
|
|
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 26.09.2019, 21:19 | |
|
Если Вы действительно пишете многослойное и многозвенное приложение , то это куча микросервисов со своим прицелом, распределенные по разным машинам , с разными структурами передачи и хранения данных , все в совокупности юзается бизнес логикой через инфраструктурные службы , и по этому dto-шки которые гоняются между сервисами по сети , и между базами - это не доменная модель. , от слова совсем. И если мы уж делаем некое ее подобие (или не делаем ?) , хотя бы на уровне монолита , то сразу говорим о том , что транспортным айдишникам в ней не место.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
||
| 26.09.2019, 21:21 [ТС] | ||
|
Ну на теории все понятно, есть БД, есть слой который гоняет данные из неё/в неё.
Есть бизнес логика которая работает с ними. Все понятно, а как реализовать то? Просто на словах все понятно. Что конкретно добавить/ изменить нужно у меня? Может посмотрите что у меня имеется? Только сильно не смейтесь https://drive.google.com/file/... sp=sharing Добавлено через 21 секунду
0
|
||
| 26.09.2019, 21:21 | |
|
Не могу получить связанные данные из БД
Добавить данные в связанные таблицы postgres Как вывести связанные данные из модели? Не правильно отображаются связанные данные из БД в DataGridview Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|