|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
||||||||||||||||
Связанные данные в трехуровневой архитектуре22.09.2019, 23:23. Показов 8080. Ответов 150
Метки нет (Все метки)
Как подтягивать связанные данные в трехуровневой архитектуре?
У меня есть три уровня данных. На уровне DAL там понятно как обращаться к связанные данным, там есть связи. Вот на пример в DAL заказ у меня выглядит так
Как вариант переносить связи на каждый уровень. Какие еще варианты?
0
|
||||||||||||||||
| 22.09.2019, 23:23 | |
|
Ответы с готовыми решениями:
150
Удалить связанные данные Как создать приложение с трехуровневой архитектурой? Поделитесь информацией о приложениях с трёхуровневой архитектурой |
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 23.09.2019, 13:38 [ТС] | |
|
Cupko, задание такое, сделать трёхуровневый архитектуру. А там, как я понял, нужны разные модели.
Значит связи добавлять эти связи и на другие слои?
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 23.09.2019, 13:41 | |
|
Dimasta1488, уровень BLL содержит DDD модель , это не dto. , которая имеет все нужные связки.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 23.09.2019, 13:56 [ТС] | |
|
sau, так, я запутался. Вот в стандартной трёхуровневый архитектуре сколько должно быть моделей одной сущности? Dal модель -содержит условно данные и связи бд, правильно? DTO-содержит более обогащенную/изменённую модель бд + связи? View Model- не содержит связей? Где тогда держать DTO модели?
Добавлено через 1 минуту Что нужно изменить/ добавить в данном моем примере, что бы он заработал?
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 23.09.2019, 13:59 | |
|
Dimasta1488, кол-во моделей зависит от сложности решения , если например Вы будете передавать данные по сети в виде json , то у вас будет еще одна прослойка network dto ) , если Вам на уровне бизнес процессов нужны обьекты поумнее не привязаннные к хранлилищу атрибутами и имеющие какую то логику , то у вас будут бизнес.модели - это и сервисы и бизнес дтошки , value object-ты и т.п.
Без конкретной решаемой задачи все это не имеет смысла и разделение весьма условное. П.С DTO - data transfer object , т.е обьект для передачи данных , который не содержит никакой логики , простая структура. данные - все что угодно , если это данные для хранения в бД - то это dto , если это данные для передачи по сети - это тоже dto , если это структуры для передачи данных между бизнес сервисами - это тоже dto/ Есть еще такие структуры как value object , poco и т.п. DomainModel - модель которая реализуется для описания бизнес.процессов.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 23.09.2019, 14:04 [ТС] | |
|
sau, оххх Ну вот конкретная задача, нужно подтянуть данные.
В данном варианте я могу DTO добавить связи
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 23.09.2019, 14:08 | |
|
смотря какие связи , связи между данными для DTO модели реляционной БД - одно ,
связи между обьектами бизнес уровня - совершенно другие связи . отражающие взаимодействие доменной модели бизнес процесса. , и на этом уровне нет таких понятий как первичный-внешний ключ в терминах БД , тут под связями подразумеваются другого рода отношения.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
||||||
| 23.09.2019, 14:22 [ТС] | ||||||
|
sau, Диаграмму почему-то не получается сделать из codefirst.
Вот к связь статуса с заказом
А на пример при изменении статуса заказа нужно что бы Статус был droplist, но не просто надпись, а еще связанная ключом с Guid, чтобы в таблицу заказ полетел статус в виде GUID
0
|
||||||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 23.09.2019, 14:42 | |
|
Да , только вот в реальности у бизнес сущностей нет идентификаторов Guid ) , есть номер пасспорта , или есть номер заказа , или есть сериинйк продукта - бизнес оперирует такими терминами и это есть идентификаторы , так что если Вы протаскиваете данные сразу на view уровень - то да , можно и Guid , если же данные проходят через бизнес.прослойку , то эти данные в процессе конвертируются в бизнес модель , которая проходит по бизнес процессу , на экран же выводится ее конвертация в ViewModel
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 23.09.2019, 14:49 [ТС] | |
|
sau, МДА ничерта не понятно что делать
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 23.09.2019, 14:59 | |
|
у Вас может быть задача "передать заказ с номером таким то в работу" , запускается соответствующий процесс (вызываются методы сервисов например) , в котором заказу с указанным номером по тем или иным правилам присваивается статус , а если в процессе требуется его где либо сохранить - то это заказ поступает на уровень datalayer - где уже для него будут dto-шки с полями удобными для той или иной системы хранения.
Если никаких бизнес правил в системе нет , то просто можно миновать этот слой , архитектура будет строится по принципу view<->data А ничерта непонятно потому , что нет понимания зачем юзается тот или иной паттерн и зачем он конкретно вам в вашей реализации , есть попытка на выдуманной задаче прикрутить ненужные ей абстракции.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
||||||||
| 23.09.2019, 15:04 [ТС] | ||||||||
|
sau,
У меня у сущностный имеется поле Code и именно с ним нужно работать в программе?
в моделе DAL ID присутствует, в DTO -тоже? и далее мы перестаем им оперировать в Бизнес моделях? Добавлено через 1 минуту
0
|
||||||||
|
|
|||
| 23.09.2019, 15:07 | |||
Есть такая штука, как Onion-архитектура. Она тоже многослойная. И тоже можно сделать ее трехслойной по желанию: Домен/Бизнес, Приложение, Инфраструктура. Она, собственно, позволяет использовать ваши EF-CodeFirst-модели, как бизнес-модели (точнее наоборот). И не плодить кучу бесполезных DTO-шек, которые надо еще и поддерживать, прокидывать свойства и ваши связанные данные. Так что там за задание?
0
|
|||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 23.09.2019, 15:09 | ||
|
0
|
||
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 23.09.2019, 15:18 [ТС] | |
|
Cupko, 4 Таблицы: Заказчик, Заказ, ЭлементЗаказа, Товар.
Слой содержащий модели для отображения пользователю, слой работы с БД, вытаскивание данных по Коду. Слой БЛ. Слой должен заниматься обработкой поступивших от пользователя данных (в виде модели), предварительной их обработкой и преобразованием в объекты для сохранения в базу данных. Так же слой занимается извлечением данных из базы данных , используя слой работы с данными, и преобразованием их в модели представления для выдачи конечному пользователю.
0
|
|
|
|
|
| 23.09.2019, 15:27 | |
|
Dimasta1488, жесть какая.
А чего на картинке 2 слоя? и как оно модель представления в бизнес-слой пробрасывает? Судя по задаче, тут всё должно быть хардкорно с SQL и без всяких ваших Code-first подходов. Ну походу да, дублировать модельки придется.
0
|
|
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|||
| 23.09.2019, 15:36 [ТС] | |||
|
DAL 1) Доступ к данным(модели БД + репозитории) BL 1) Domain модели, в которых нет id (и что еще они должны делать)? 2) DTO (сейчас они у меня содержат те же самые поля, но более обогащенные) 3) Services (сейчас у меня они перегоняют из DTO в DB) 4) Бизнес модели, которых нет в БД(корзина на пример) View Просто выводит данные, которые я передаю с уровню BL из DTO Добавлено через 6 минут Я прекрасно понимаю, что данные задачу можно решить без всяких моделей, слоев и все этого, тупа гонять SQL запросы туда сюда по ID и все. Но на данной программе я хочу научится делать пусть легкие задачи, но чтобы в дальнейшем пусть даже не я, а другой человек мог бы ее спокойно дорабатывать, масштабировать, а не переделывать за мной. А для этого всё это и хочу сделать
0
|
|||
|
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
|
|
| 23.09.2019, 15:54 [ТС] | |
|
0
|
|
| 23.09.2019, 15:54 | |
|
Помогаю со студенческими работами здесь
20
Не могу получить связанные данные из БД
Добавить данные в связанные таблицы postgres Как вывести связанные данные из модели? Не правильно отображаются связанные данные из БД в DataGridview Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|