powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / repository & aggregate entity
25 сообщений из 305, страница 1 из 13
repository & aggregate entity
    #39562991
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь сделать репозиторий для своего учебного проекта, сильно не ориентируюсь, в инете куча примеров и везде Enterprise на ровном месте, который сходу не осилю повторить.

Problem: EntityBaseRepository<Vehicle> Описание транспортного средства
EntityBaseRepository<Paramert> массив параметров бортовой системы, напряжение аккумулятора, уровень GSM сигнала и т.д.

И вот мне понадобилось на клиенте композитный тип как Vehicle + Paramert (последние/текущие данные параметра)
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39562994
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, случайно отправил не дописав сообщение.

Сейчас я в контроллере собираю этот композитный тип. Хочу сделать красивее. Но не понимаю в общем виде, как это должно выглядеть.
Как правильно делать, это должна быть еще один EntityBaseRepository<>? И типизировать его своим композитным типом?
Хотя полноценный CRUD для этого Entity не нужен, достаточно обыкновенного Read-Only GetAll()

Или сделать еще один метод в EntityBaseRepository<Vehicle> дополнив его выборкой из Parametr?

Или нужно заводить сервис и там из двух EntityBaseRepository собирать свой композитный тип?

или куда можно запрятать этот запрос который бы выдавал результат из двух Entyty? В идеале хотелось бы CQRS, хотя бы в примитивном зачаточном виде. (потому что полноценные примеры я сразу не потяну)
Спасибо.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563017
pet_trow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно сделать и как Вы предложили "заводить сервис и там из двух EntityBaseRepository собирать свой композитный тип" (DTO?). а можно и просто запрос сделать, некоторый IMyQuery, если это результат джоина таблиц БД. запрос сразу вернет DTO как проекцию
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563034
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pet_trow, спасибо.

Сколько я читал DDD, я так понял что Repository изначально и должен выдавать Aggregate Root (доменый тип) которым оперирует наша программа. А сами Entity мне по идее в чистом виде и не нужны.
Но во всем примерах стабильно идет реализация на выдачу Entity, и стабильно нет примеров для сложных/комплексных типов.
И я вот не пойму, я неправильно понял идею? Или это в примерах
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563049
pet_trow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arpanxpet_trow, спасибо.

Сколько я читал DDD, я так понял что Repository изначально и должен выдавать Aggregate Root (доменый тип) которым оперирует наша программа. А сами Entity мне по идее в чистом виде и не нужны.
Но во всем примерах стабильно идет реализация на выдачу Entity, и стабильно нет примеров для сложных/комплексных типов.
И я вот не пойму, я неправильно понял идею? Или это в примерах

сильно вариативно это DDD от проекта к проекту. "А сами Entity мне по идее в чистом виде и не нужны" - да, ибо это уже БД: извлечь по Id, сохранить, удалить. а вот запросы - это отдельная тема, с бизнес-логикой. тут репо не нужен совсем.

Я не спец в DDD (но мнение имею :)) Aggregate Root - это вообще перпендикулярно каким-либо репо. это несколько более высокий уровень абстракции.

Давайте позовем hVost
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563060
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArpanxХочу сделать красивее.
Сначала делают до конца пример.
Это методика для обучения.
Дайте ссылку какой пример делаете или откуда списываете.
Там ведь нет наверняка в ГУИ голых сущностей из базы?
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563065
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arpanx,
Ну и не забывайте, что технологии меняютя в 3-4 года.
Счас вон, oData и Net Core подоспели).
Не говоря о чистом js клиенте.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563088
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну у меня как раз связка такая ASPNet.Core 2.0 + ORM EF PostgreSQL + Angualr 5.0 и все это работает на Linux Ubuntu

Репозиторий делаю по этому примеру Как самый простой. И тут сразу возник вопрос как, а вернее где и кто это должен реализовать формирование комплексного типа. (построить дерево на основании данных из двух таблиц)

В том то и проблема что не могу найти хороший пример с которого можно было бы содрать. Есть хорошие примеры по Clean Architecture, Гексагональная архитектура, CQRS но они настолько сложные что не могу осознать и повторить у себя, хотя бы до стадии чтобы оно компилировалось.

Сейчас такой банальный вопрос, куда спрятать Join двух Entity и формирование DTO. А еще лучше посмотреть на код.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563098
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arpanx,
Ангуляр это значит бизнем логика и контроллёры в JS.
C# тут только тупой REST сервис из БД.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563100
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArpanxJoin двух Entity в ангуляре
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563101
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arpanx,
Ещё, ангуляр это приложение одной страницы. Я бы советовал не этого типа для обучения.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563110
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arpanx,
Net MVC 5
же у вас есть.
Обязательно раскуси MVC с его POST и перерисовкой страницы. А не AJAX.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563196
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arpanxpet_trow, спасибо.

Сколько я читал DDD, я так понял что Repository изначально и должен выдавать Aggregate Root (доменый тип) которым оперирует наша программа. А сами Entity мне по идее в чистом виде и не нужны.
Но во всем примерах стабильно идет реализация на выдачу Entity, и стабильно нет примеров для сложных/комплексных типов.
И я вот не пойму, я неправильно понял идею? Или это в примерах

Entity Framework, как и любая другая ORM, не дадут реализовать DDD в полной мере. Потому как с одной стороны, действительно, можно правильно спроектировать модель данных и получить нужные Aggregate Root, с которыми можно работать очень похожим образом на работу с доменом. С другой стороны, нет инкапсуляции, и нет никакой возможности нормально эту инкапсуляцию реализовать, поэтому это всё сплошная мишура. Остаётся только одно единственное понятие: Entity, отсюда и название. Не нужно искать стабильных примеров организации DDD на ORM, их попросту нет.

Entity Framework даёт возможность очень быстро работать с моделью данных со строгой типизацией, что даёт возможность применять LINQ, использовать атрибуты и мощный слой рефлексии поверх всего этого. Но любая динамика даст трещину. Заходите EAV? Приехали. Захотите динамические подзапросы? Привет, костыли на Expandinq expressions!

Идея здесь простая: если у вас имеется конечная хорошо нормализованная модель, подверженная изменениям только в рамках нормализации, можете пилить, и очень быстро выдавать стабильный, понятный и хорошо сопровождаемый результат. Зачастую, этого хватает.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563197
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArpanxСейчас такой банальный вопрос, куда спрятать Join двух Entity и формирование DTO. А еще лучше посмотреть на код.

Зачем их прятать? JOIN это уже само по себе нарушение нормализации, если всё правильно нормализовано и вы живёте в идеальном мире, то JOIN не нужен, до любой сущности можно добраться через сущность, являющейся Aggregate Root
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563198
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ну и не забывайте, что технологии меняютя в 3-4 года.

Это неверное утверждение. Технологии не меняются, появляются новые, путём эволюции существующих, или переосмысление и эксперименты. Нельзя закладываться на технологии, которых ещё нет, поэтому помнить об этом бессмысленно совершенно.


Petro123Счас вон, oData и Net Core подоспели).

OData «подоспела» ещё в 2017 году
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563199
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123Счас вон, oData и Net Core подоспели).

OData «подоспела» ещё в 2017 году

*в 2007
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563200
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArpanxНу у меня как раз связка такая ASPNet.Core 2.0 + ORM EF PostgreSQL + Angualr 5.0 и все это работает на Linux Ubuntu

Репозиторий делаю по этому примеру Как самый простой. И тут сразу возник вопрос как, а вернее где и кто это должен реализовать формирование комплексного типа. (построить дерево на основании данных из двух таблиц)

В том то и проблема что не могу найти хороший пример с которого можно было бы содрать. Есть хорошие примеры по Clean Architecture, Гексагональная архитектура, CQRS но они настолько сложные что не могу осознать и повторить у себя, хотя бы до стадии чтобы оно компилировалось.

Хороших примеров в вакууме не существует. Когда мы проектировали архитектуру нашего последнего и текущего проекта на DDD / CQRS, выяснилось, что имеющиеся реализации фреймворков, библиотек, решений, проектов — нам не подходит ни один, даже на 20%. Но из каждого можно извлечь удачные решения, блестящие обобщения и паттерны. Было прочитано тонна литературы, статей, исследований, изучен досконально код кучи проектов, включая на других языках, и путём изысканий, набития шишек, кучи «первых блинов», был рождён рабочий проект, который даже после всех мытарств не является образцом для подражания и рефакторится раз в 2 недели набегами.

А вы хотите «хороший пример». Максимум что можно найти хорошего, это реализацию какого-нибудь алгоритма. Который влезет на один экран. Далее нужно собирать бест практикс для каждого конкретного случая, накапливать опыт, читать и кодить, кодить, кодить.

Нет никакого примера, который будет ответом на ваши вопросы.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563220
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНет никакого примера, который будет ответом на ваши вопросы.
Со всем согласен кроме этого.
Аффтар! Ответом на ваш вопрос будет Hello wold.
Добвлю imho что это MVC hello world, если вы пишите не кандидатскую или докторскую.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563583
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVosttНет никакого примера, который будет ответом на ваши вопросы.
Со всем согласен кроме этого.
Аффтар! Ответом на ваш вопрос будет Hello wold.
Добвлю imho что это MVC hello world, если вы пишите не кандидатскую или докторскую.

MVC hello world больше вредны, чем полезны.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563595
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Тааааак))).
Давай другой на MVC и без пессимизма).
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563597
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Я имеё ввиду пример веб проекта с ГУИ от Net.
Неужели нет такого.
Ангуляр это не базовый школьный пример для шарп программиста.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563602
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
VS 2015 меню - новый веб сайт.
Итого 4 типа проекта.
Так что без пессимизма).
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563748
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Petro123,
Я имеё ввиду пример веб проекта с ГУИ от Net.
Неужели нет такого.
Ангуляр это не базовый школьный пример для шарп программиста.

Не, нету
Проблема школьных примеров, что реальные проекты потом делаются именно вот так, по-школьному.


Petro123VS 2015 меню - новый веб сайт.
Итого 4 типа проекта.
Так что без пессимизма).

Ну начать можно с этого, конечно. Но в итоге всё полностью меняется, так или иначе :)
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39563775
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Ну дак понятно, что приходя в ВУЗ вам скажут забудьте школу))))).
Удачи аффтару.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39564263
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt спасибо за ценные замечания, как раз от метров и хотел услышать соображения на тему.

Спрятал свой Join в один из методов репозитория, работает, вроде красиво. Но появились зависимости от типов которые определены снаружи.
И то что репозитой возвращает DTO.

Вынес это все в отдельный сервис, работает. Но нехватало гибкости который мне давайл DBContext. Поэтому изначально все сделал на нем.

Потом решил все таки переделать на работу сервиса от репозитория
Возвращаю из репозитория в сервис вот так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public virtual IEnumerable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties)
        {
            IQueryable<T> query = _context.Set<T>();
            foreach (var includeProperty in includeProperties)
            {
                query = query.Include(includeProperty);
            }
            return query.AsEnumerable();
        }




В сервисе пытаюсь сделать

Код: c#
1.
2.
3.
4.
5.
_vehicleRepository.AllIncluding(x => x.DepartmentVehicles, x => x.VehicleParameters).ToList();

var department = _vehicleRepository;
foreach (var d in department)
       {}



Код: c#
1.
foreach statement cannot operate on variables of type '?' because '?' does not contain a public definition for 'GetEnumerator'



Generic Repository вроде делали умные люди, чего-то не хватает. Разбираюсь.
...
Рейтинг: 0 / 0
25 сообщений из 305, страница 1 из 13
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / repository & aggregate entity
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]