|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanx, ой ошибку отправил. Код: c# 1.
Вот теперь все работает на прямую из репозитория. Всем спасибо. А Join двух Entity в DTO это предназначено уже для клиента на Ангуляре. Там с ним уже никаких манипуляций не проводят. Только read-only отображают в tree-table. Я же думаю нормально на сервере уже формировать данные в нужном формате, а не склеивать их на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 12:07 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanxна Ангуляре. Там с ним уже никаких манипуляций не проводят. У вам должен быть REST на бэке, чтобы прицепить потом любой фронт. Хоть ангуляр, хоть андроид. И бизнес логика Либо ангуляре Либо на бэке. Что у вас под словом манипуляции)) мы не знаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 13:01 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxЯ же думаю нормально на сервере уже формировать данные в нужном формате, а не склеивать их на клиенте? Ангуляр это утром загрузил и 8 часов ходишь по страницам, работаешь. Как можно склеить сервере то что понадобится вечером? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 13:04 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123, Хм, звучит логично. У меня в принципе REST и есть. Но похоже кривой. Сделать REST Endpoint как продожение Entity из репозитория в принципе это правильное решение. Щас, надо подумать как это будет работать со стороны клиента. Спасибо за дельное замечание. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 13:12 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Arpanx, Замени ангуляр. Мы в топике шарп. А ангуляр для топика js программист. Ты не потянешь боливар за двоих. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 13:21 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxGeneric Repository вроде делали умные люди, чего-то не хватает. Разбираюсь. Generic Repo подойдёт только, если у вас модель данных отлично нормализована, таким образом, что вам никогда не понадобится JOIN между двумя корнями агрегатов, если они вообще у вас получатся выраженными. Так что, если вам «чего-то нехватает», то здесь одно из двух: 1. Плохо нормализованная модель, перепроектировать 2. Бизнес не укладывается в нормализацию модели, вам не подойдёт Generic Repo. Ещё 3 вариант: Generic Repo, как стандартная реализация, делаете для конкретных случаев конкретные интерфейсы репо с конкретной реализацией, где выжимаете весь power из своего DbContext-а. И ещё 4 вариант: Query Object (QO), или какие-то вариации спецификаций (которые на мой взгляд чуть менее, чем полностью ущербны). Но это уже досвидос genrepo и вообще от репо остаётся только add/update/remove, но ни в коем случае никаких построений запросов. QO можно смонстрячить на LINQ, через Expression tree, это опять же ковыряния, костыли, на любителя (например, местный гуру Алексей К любитель LINQ). Любой вариант хорош, применительно к своей задаче. Я делал genrepo много раз, но в ограниченном контексте, большую систему строить на этом я бы не стал никогда и даже за большие деньги. Ну может за очень большие бы и стал.. нанял бы пару студентов, пусть бы долбались ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:16 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttArpanxGeneric Repository вроде делали умные люди, чего-то не хватает. Разбираюсь. Generic Repo подойдёт только, если у вас модель данных отлично нормализована, таким образом, что вам никогда не понадобится JOIN между двумя корнями агрегатов, если они вообще у вас получатся выраженными. Так что, если вам «чего-то нехватает», то здесь одно из двух: 1. Плохо нормализованная модель, перепроектировать 2. Бизнес не укладывается в нормализацию модели, вам не подойдёт Generic Repo. Ещё 3 вариант: Generic Repo, как стандартная реализация, делаете для конкретных случаев конкретные интерфейсы репо с конкретной реализацией, где выжимаете весь power из своего DbContext-а. И ещё 4 вариант: Query Object (QO), или какие-то вариации спецификаций (которые на мой взгляд чуть менее, чем полностью ущербны). Но это уже досвидос genrepo и вообще от репо остаётся только add/update/remove, но ни в коем случае никаких построений запросов. QO можно смонстрячить на LINQ, через Expression tree, это опять же ковыряния, костыли, на любителя (например, местный гуру Алексей К любитель LINQ). Любой вариант хорош, применительно к своей задаче. Я делал genrepo много раз, но в ограниченном контексте, большую систему строить на этом я бы не стал никогда и даже за большие деньги. Ну может за очень большие бы и стал.. нанял бы пару студентов, пусть бы долбались нехилый разброс :) hVostt, а Вы не могли бы, ну, чисто по-опыту (пожалуйста!!!!), свое видение/применимость DDD тезисно обозначить? я, например, как и ТС, тоже в поисках этого "тут же DDD!!!". но пока его не нахожу за "деревьями" вот этих всех Вами перечисленных вариантов: "леса не вижу" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2017, 17:05 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
pet_trowнехилый разброс :) hVostt, а Вы не могли бы, ну, чисто по-опыту (пожалуйста!!!!), свое видение/применимость DDD тезисно обозначить? я, например, как и ТС, тоже в поисках этого "тут же DDD!!!". но пока его не нахожу за "деревьями" вот этих всех Вами перечисленных вариантов: "леса не вижу" А чё его искать? Это просто дизайн архитектуры и прикладной логики в терминах, приближённых к бизнесу. За подробностями лучше обратиться к тематической литературе :) Ну или что-то конкретное можно обсудить.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2017, 20:06 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
pet_trow. но пока его не нахожу за "деревьями Это когда, вместо голых сущностей (класс копия таблицы) делают ещё классы сверху чтобы не трогать классы сущности внизу. Увидели такое в лесу? ). "Лекарство имеет побочные эффекты." ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2017, 08:59 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123Это когда, вместо голых сущностей (класс копия таблицы) делают ещё классы сверху чтобы не трогать классы сущности внизу. это называется DTO ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2017, 12:56 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttPetro123Это когда, вместо голых сущностей (класс копия таблицы) делают ещё классы сверху чтобы не трогать классы сущности внизу. это называется DTO приехали. DTO ещё выше. Я о таких паре классов: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 10:26 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123приехали. DTO ещё выше. Я о таких паре классов: любой класс, созданный для того, чтобы гонять данные между подсистемами может по праву считаться DTO ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 10:40 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttPetro123приехали. DTO ещё выше. Я о таких паре классов: любой класс, созданный для того, чтобы гонять данные между подсистемами может по праву считаться DTO неа) DTO это простейший класс без методов бизнес-логики. По факту тот JSON если есть то можно обойтись без DTO. Или передача инфы через URL еси есть, то тоже можно DTO выкинуть. .. Мы вообще тут про агрегацию сущностей для бизнес логики НА сервере. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 10:59 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttчтобы гонять данные он не для гонять Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 11:00 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Скорее всего будете кидаться тапками, но решил пока делать так: DBContext -> Service -> (тут на выходе композитные типы ) -> WebApi Comtoller/REST Т.е. на выходе REST будут мои доменные типы которыми оперирует моя программа на клиенте. От репозитория пока отказался, не получается с репозиторием делать тоже что с DBContext. Параллельно смотрю на реализацию CloudFireStore облачная база данных noSQL от гугла. Там есть своя красота. За данными не нужно ходить, они сами к вам на клиента постучаться, можно подписываться на события в базе. А денормализацию можно рассматривать как композитный тип. Только за целостностью базы приходится самому следить с помощью кода на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 11:43 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxОт репозитория пока отказался, не получается с репозиторием делать тоже что с DBContext.Есть мнение, что DbContext и есть репозитарий. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 11:56 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
ArpanxDBContext -> Service -> (тут на выходе композитные типы ) -> WebApi Comtoller/REST Есть мнение, что если у вас современная модель БД с грамотной денормализацией, то можно сразу сущности БД в виде классов выставлять в REST. Я не в курсе, есть ли в MS REST фреймворк (в Java он есть), тогда никакие сервисные слои и прослойки не нужны. При REST технолгии вся логика на клиенте. А СУБД-импотент тупо передаёт ДАННЫЕ. Arpanxбаза данных noSQL это оффтоп ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 12:21 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123DTO это простейший класс без методов бизнес-логики. видимо ты путаешь с POCO? ) DTO может быть даже обычным Dictionary, и у нас, кстати, в текущем проекте в основном именно такие DTO, никаких статических классов не может быть и в помине, если у тебя все модели создаются пользователями. Petro123По факту тот JSON если есть то можно обойтись без DTO. JSON это тоже DTO ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 16:47 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Алексей КArpanxОт репозитория пока отказался, не получается с репозиторием делать тоже что с DBContext.Есть мнение, что DbContext и есть репозитарий. DbContext это и репозиторий, и UOW, и кеширование, и валидация, и генерация SQL, и миграции и... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 16:48 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttвидимо ты путаешь с POCO? ) нет) Как только их не называют)) https://ru.wikipedia.org/wiki/POJO это в Java hVosttDTO может быть даже обычным Dictionary не понял зачем. Мы передаём справочник через веб на другой континет. Зачем логику списка...уникальности.....вставки...удаления тащить через океан? Класс Dictionary ИМЕЕТ ЛОГИКУ! hVosttесли у тебя все модели создаются пользователями. вопрос где она создаётся. На сервере или клиенте в ангуляре. Понятно, что у тебя предметка на работе сложнее.....много динамики. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 17:31 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttJSON это тоже DTO ))) угу. А палка это дерево из одной ветки)). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 17:33 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123не понял зачем. Мы передаём справочник через веб на другой континет. Зачем логику списка...уникальности.....вставки...удаления тащить через океан? Класс Dictionary ИМЕЕТ ЛОГИКУ! Затем, что объект с набором [свойство=значение,...], это по сути и есть словарь. Ты его итак потащишь через "океан" в каком-то виде. Если этот вид Dictionary, а точнее IReadOnlyDictionary или ImmutableDictionary -- это зашибись вообще! Мы же обсуждаем, что класс в C# это целая хренотень со ссылкой на тип, и контекстом синхронизации под пристальным взглядом GC? Как словарь, так сразу «логика», а экземпляр класса это что, хрен собачий? Petro123))) угу. А палка это дерево из одной ветки)). В определении DTO ни разу не сказано, что это класс. Это любой объект без поведения. Под поведением обычно понимают бизнес-логику, а не базовые алгоритмы, необходимые для функционирования самого объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:46 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttЗатем, что объект с набором [свойство=значение,...], это по сути и есть словарь. дак всё таки, объект-класс или JSON со строкой? hVosttЕсли этот вид Dictionary, а точнее IReadOnlyDictionary или ImmutableDictionary -- это зашибись вообще! не согласен. Один сервер и тыЩи клиентов. Какие интерфейсы? hVosttВ определении DTO ни разу не сказано, что это класс. моё имхо в том, что это объект в памяти для дальнейшей трансформации в JSON. Иногда ЭТО вообще не нужно и устарело. hVosttЭто любой объект без поведения. Под поведением обычно понимают бизнес-логику, а не базовые алгоритмы, необходимые для функционирования самого объекта. нет. Не люблю мешать понятия. Мухи отдельно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 10:19 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
Petro123дак всё таки, объект-класс или JSON со строкой? ну объект какой-то, из которого можно извлечь данные Petro123не согласен. Один сервер и тыЩи клиентов. Какие интерфейсы? ну пусть будет, контракт Petro123моё имхо в том, что это объект в памяти для дальнейшей трансформации в JSON. Иногда ЭТО вообще не нужно и устарело. словарь отлично трансформируется в JSON и обратно :) Petro123нет. Не люблю мешать понятия. Мухи отдельно.... у каждого свои загоны ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 13:34 |
|
repository & aggregate entity
|
|||
---|---|---|---|
#18+
hVosttну пусть будет, контракт Тогда приводи примеры что за волшебные слова "контракт" мы посылаем со списком городов ИндексПочты Имя hVosttPetro123моё имхо в том, что это объект в памяти для дальнейшей трансформации в JSON. Иногда ЭТО вообще не нужно и устарело. словарь отлично трансформируется в JSON и обратно :) угу. Осталось выяснить какой толщины должен быть список городов чтобы обозвать его не DTO а бизнес объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 14:08 |
|
|
start [/forum/topic.php?fid=17&msg=39564354&tid=1349235]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
146ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 233ms |
total: | 483ms |
0 / 0 |