|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Пытаюсь сделать репозиторий для своего учебного проекта, сильно не ориентируюсь, в инете куча примеров и везде Enterprise на ровном месте, который сходу не осилю повторить. Problem: EntityBaseRepository<Vehicle> Описание транспортного средства EntityBaseRepository<Paramert> массив параметров бортовой системы, напряжение аккумулятора, уровень GSM сигнала и т.д. И вот мне понадобилось на клиенте композитный тип как Vehicle + Paramert (последние/текущие данные параметра) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 14:12 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Сорри, случайно отправил не дописав сообщение. Сейчас я в контроллере собираю этот композитный тип. Хочу сделать красивее. Но не понимаю в общем виде, как это должно выглядеть. Как правильно делать, это должна быть еще один EntityBaseRepository<>? И типизировать его своим композитным типом? Хотя полноценный CRUD для этого Entity не нужен, достаточно обыкновенного Read-Only GetAll() Или сделать еще один метод в EntityBaseRepository<Vehicle> дополнив его выборкой из Parametr? Или нужно заводить сервис и там из двух EntityBaseRepository собирать свой композитный тип? или куда можно запрятать этот запрос который бы выдавал результат из двух Entyty? В идеале хотелось бы CQRS, хотя бы в примитивном зачаточном виде. (потому что полноценные примеры я сразу не потяну) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 14:25 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
можно сделать и как Вы предложили "заводить сервис и там из двух EntityBaseRepository собирать свой композитный тип" (DTO?). а можно и просто запрос сделать, некоторый IMyQuery, если это результат джоина таблиц БД. запрос сразу вернет DTO как проекцию ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 15:55 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
pet_trow, спасибо. Сколько я читал DDD, я так понял что Repository изначально и должен выдавать Aggregate Root (доменый тип) которым оперирует наша программа. А сами Entity мне по идее в чистом виде и не нужны. Но во всем примерах стабильно идет реализация на выдачу Entity, и стабильно нет примеров для сложных/комплексных типов. И я вот не пойму, я неправильно понял идею? Или это в примерах ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 16:38 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanxpet_trow, спасибо. Сколько я читал DDD, я так понял что Repository изначально и должен выдавать Aggregate Root (доменый тип) которым оперирует наша программа. А сами Entity мне по идее в чистом виде и не нужны. Но во всем примерах стабильно идет реализация на выдачу Entity, и стабильно нет примеров для сложных/комплексных типов. И я вот не пойму, я неправильно понял идею? Или это в примерах сильно вариативно это DDD от проекта к проекту. "А сами Entity мне по идее в чистом виде и не нужны" - да, ибо это уже БД: извлечь по Id, сохранить, удалить. а вот запросы - это отдельная тема, с бизнес-логикой. тут репо не нужен совсем. Я не спец в DDD (но мнение имею :)) Aggregate Root - это вообще перпендикулярно каким-либо репо. это несколько более высокий уровень абстракции. Давайте позовем hVost ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 17:27 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxХочу сделать красивее. Сначала делают до конца пример. Это методика для обучения. Дайте ссылку какой пример делаете или откуда списываете. Там ведь нет наверняка в ГУИ голых сущностей из базы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 18:52 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanx, Ну и не забывайте, что технологии меняютя в 3-4 года. Счас вон, oData и Net Core подоспели). Не говоря о чистом js клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 19:08 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Ну у меня как раз связка такая ASPNet.Core 2.0 + ORM EF PostgreSQL + Angualr 5.0 и все это работает на Linux Ubuntu Репозиторий делаю по этому примеру Как самый простой. И тут сразу возник вопрос как, а вернее где и кто это должен реализовать формирование комплексного типа. (построить дерево на основании данных из двух таблиц) В том то и проблема что не могу найти хороший пример с которого можно было бы содрать. Есть хорошие примеры по Clean Architecture, Гексагональная архитектура, CQRS но они настолько сложные что не могу осознать и повторить у себя, хотя бы до стадии чтобы оно компилировалось. Сейчас такой банальный вопрос, куда спрятать Join двух Entity и формирование DTO. А еще лучше посмотреть на код. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 20:30 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanx, Ангуляр это значит бизнем логика и контроллёры в JS. C# тут только тупой REST сервис из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 21:02 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxJoin двух Entity в ангуляре ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 21:03 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanx, Ещё, ангуляр это приложение одной страницы. Я бы советовал не этого типа для обучения. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 21:05 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanx, Net MVC 5 же у вас есть. Обязательно раскуси MVC с его POST и перерисовкой страницы. А не AJAX. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2017, 21:21 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanxpet_trow, спасибо. Сколько я читал DDD, я так понял что Repository изначально и должен выдавать Aggregate Root (доменый тип) которым оперирует наша программа. А сами Entity мне по идее в чистом виде и не нужны. Но во всем примерах стабильно идет реализация на выдачу Entity, и стабильно нет примеров для сложных/комплексных типов. И я вот не пойму, я неправильно понял идею? Или это в примерах Entity Framework, как и любая другая ORM, не дадут реализовать DDD в полной мере. Потому как с одной стороны, действительно, можно правильно спроектировать модель данных и получить нужные Aggregate Root, с которыми можно работать очень похожим образом на работу с доменом. С другой стороны, нет инкапсуляции, и нет никакой возможности нормально эту инкапсуляцию реализовать, поэтому это всё сплошная мишура. Остаётся только одно единственное понятие: Entity, отсюда и название. Не нужно искать стабильных примеров организации DDD на ORM, их попросту нет. Entity Framework даёт возможность очень быстро работать с моделью данных со строгой типизацией, что даёт возможность применять LINQ, использовать атрибуты и мощный слой рефлексии поверх всего этого. Но любая динамика даст трещину. Заходите EAV? Приехали. Захотите динамические подзапросы? Привет, костыли на Expandinq expressions! Идея здесь простая: если у вас имеется конечная хорошо нормализованная модель, подверженная изменениям только в рамках нормализации, можете пилить, и очень быстро выдавать стабильный, понятный и хорошо сопровождаемый результат. Зачастую, этого хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 02:26 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxСейчас такой банальный вопрос, куда спрятать Join двух Entity и формирование DTO. А еще лучше посмотреть на код. Зачем их прятать? JOIN это уже само по себе нарушение нормализации, если всё правильно нормализовано и вы живёте в идеальном мире, то JOIN не нужен, до любой сущности можно добраться через сущность, являющейся Aggregate Root ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 02:28 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123Ну и не забывайте, что технологии меняютя в 3-4 года. Это неверное утверждение. Технологии не меняются, появляются новые, путём эволюции существующих, или переосмысление и эксперименты. Нельзя закладываться на технологии, которых ещё нет, поэтому помнить об этом бессмысленно совершенно. Petro123Счас вон, oData и Net Core подоспели). OData «подоспела» ещё в 2017 году ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 02:33 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttPetro123Счас вон, oData и Net Core подоспели). OData «подоспела» ещё в 2017 году *в 2007 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 02:33 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxНу у меня как раз связка такая ASPNet.Core 2.0 + ORM EF PostgreSQL + Angualr 5.0 и все это работает на Linux Ubuntu Репозиторий делаю по этому примеру Как самый простой. И тут сразу возник вопрос как, а вернее где и кто это должен реализовать формирование комплексного типа. (построить дерево на основании данных из двух таблиц) В том то и проблема что не могу найти хороший пример с которого можно было бы содрать. Есть хорошие примеры по Clean Architecture, Гексагональная архитектура, CQRS но они настолько сложные что не могу осознать и повторить у себя, хотя бы до стадии чтобы оно компилировалось. Хороших примеров в вакууме не существует. Когда мы проектировали архитектуру нашего последнего и текущего проекта на DDD / CQRS, выяснилось, что имеющиеся реализации фреймворков, библиотек, решений, проектов — нам не подходит ни один, даже на 20%. Но из каждого можно извлечь удачные решения, блестящие обобщения и паттерны. Было прочитано тонна литературы, статей, исследований, изучен досконально код кучи проектов, включая на других языках, и путём изысканий, набития шишек, кучи «первых блинов», был рождён рабочий проект, который даже после всех мытарств не является образцом для подражания и рефакторится раз в 2 недели набегами. А вы хотите «хороший пример». Максимум что можно найти хорошего, это реализацию какого-нибудь алгоритма. Который влезет на один экран. Далее нужно собирать бест практикс для каждого конкретного случая, накапливать опыт, читать и кодить, кодить, кодить. Нет никакого примера, который будет ответом на ваши вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 02:43 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttНет никакого примера, который будет ответом на ваши вопросы. Со всем согласен кроме этого. Аффтар! Ответом на ваш вопрос будет Hello wold. Добвлю imho что это MVC hello world, если вы пишите не кандидатскую или докторскую. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 10:01 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123hVosttНет никакого примера, который будет ответом на ваши вопросы. Со всем согласен кроме этого. Аффтар! Ответом на ваш вопрос будет Hello wold. Добвлю imho что это MVC hello world, если вы пишите не кандидатскую или докторскую. MVC hello world больше вредны, чем полезны. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 12:01 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVostt, Тааааак))). Давай другой на MVC и без пессимизма). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 12:12 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123, Я имеё ввиду пример веб проекта с ГУИ от Net. Неужели нет такого. Ангуляр это не базовый школьный пример для шарп программиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 12:15 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVostt, VS 2015 меню - новый веб сайт. Итого 4 типа проекта. Так что без пессимизма). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 12:20 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123Petro123, Я имеё ввиду пример веб проекта с ГУИ от Net. Неужели нет такого. Ангуляр это не базовый школьный пример для шарп программиста. Не, нету Проблема школьных примеров, что реальные проекты потом делаются именно вот так, по-школьному. Petro123VS 2015 меню - новый веб сайт. Итого 4 типа проекта. Так что без пессимизма). Ну начать можно с этого, конечно. Но в итоге всё полностью меняется, так или иначе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 14:49 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVostt, Ну дак понятно, что приходя в ВУЗ вам скажут забудьте школу))))). Удачи аффтару. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:08 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVostt спасибо за ценные замечания, как раз от метров и хотел услышать соображения на тему. Спрятал свой Join в один из методов репозитория, работает, вроде красиво. Но появились зависимости от типов которые определены снаружи. И то что репозитой возвращает DTO. Вынес это все в отдельный сервис, работает. Но нехватало гибкости который мне давайл DBContext. Поэтому изначально все сделал на нем. Потом решил все таки переделать на работу сервиса от репозитория Возвращаю из репозитория в сервис вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
В сервисе пытаюсь сделать Код: c# 1. 2. 3. 4. 5.
Код: c# 1.
Generic Repository вроде делали умные люди, чего-то не хватает. Разбираюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 11:58 |
|
|
start [/forum/topic.php?fid=17&fpage=6&tid=1349235]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 385ms |
0 / 0 |