170 похожих чатов

Блин, господа, вы серьёзно обсуждаете стоит ли возвращать сущность БД

из контроллера?

22 ответов

44 просмотра

Ты начал это 😁

Oleg-Safonov Автор вопроса
Дим 27
Ты начал это 😁

Вы аргументируете, что это норм. Очевидно пришёл новичок, которому нужно сказать, что это не норм и он не просто так напоролся на проблемы сейчас

Oleg Safonov
Вы аргументируете, что это норм. Очевидно пришёл н...

Опять же - проблема связана с сериализацией данных, а не в упаковке в другую структуру

Oleg-Safonov Автор вопроса
Дим 27
Опять же - проблема связана с сериализацией данных...

нет, блин, он возвращает не зная что он возвращает, в этом проблема

Oleg Safonov
нет, блин, он возвращает не зная что он возвращает...

Хорошо, представь, что тебе нужно вернуть объекты Подразделения Внутри есть ссылка на родительское подразделение Также навигационное свойство с коллекцией дочерних подразделений и навигационное свойство на подразделение человека, который сосудам текущее подразделение Id, ParentId, CreateDivisionId, Children Попробуй просто взять и смапить это в дто в древовидном и вернуть результат через апи И поймешь что дело не в дто

Oleg-Safonov Автор вопроса
Дим 27
Хорошо, представь, что тебе нужно вернуть объекты ...

На этапе создания ДТО я пойму что делаю херню

Oleg Safonov
На этапе создания ДТО я пойму что делаю херню

Ну задача стоит вывести древовидный список)

Oleg-Safonov Автор вопроса
Дим 27
Ну задача стоит вывести древовидный список)

выводите. Никаких циклических связей это не требует

Дим 27
Хорошо, представь, что тебе нужно вернуть объекты ...

вроде бы ребята предлагают брать сущность из EFCore"ки с инклюдами и прочим, размапливать в детерминированную DTOшку и возвращать её

Oleg-Safonov Автор вопроса

при чём тут ef вообще?

Кстати, еще в копилку, если тебе потом в контроллере все равно надо будет мапить это дело, чтобы возвращать, то почему бы и сразу не делать это?

Phantom
Кстати, еще в копилку, если тебе потом в контролле...

у нас просто сложилась практика возвращать те же модели, что лежат в БД, наружу. Мы толком не размапливаем, если это не какая-то необходимость

Alexander
вроде бы ребята предлагают брать сущность из EFCor...

Ничего не предлагали такого. За инклюды надо бить по пальцам обычно. Или по голове.

почему за инклюды надо бить по голове? Если мы говорим про работу с EFCore и заполнение ICollection в модели по заполненным ключам в модель билдере?

Alexander
почему за инклюды надо бить по голове? Если мы гов...

Потому что использующий код не знает что было заинклужено. Еще хуже когда это возвращается из апихи и не покрыто тестами и вы узнаете о проблеме только когда клиент отвалится (а отвалится только когда захочет получить имено это поле)

Alexey Brovko
Потому что использующий код не знает что было заин...

И какая альтернатива? При работе с EFCore я использую инклюды, когда мне нужно заполнить, например, модель Menu данными из связанных один-ко-многим ICollection<MenuItem> MenuItems. Используя LINQ я задаю SQL через LINQ-to-Entities в процессе формирования IQueryable запроса в БД. Указанные мной в модель билдере ключи и отношения позволяют ORM сделать за меня оптимальную работу по поиску связанных объектов и вернуть мне коллекцию. Я понимаю, что можно пойти альтернативным путём, и сходу приходит вариант с отдельной выборкой MenuItems.Where(x => x.IdMenu == idMenu), и затем вкладывать в DTO эти MenuItems в отдельную менюшку. Но когда речь заходит о формировании контракта с отношениями многие-ко-многим, этот вариант не сработает. Как тут поступить? Если ManyToMany, которое обеспечивает нам EFCore, ты считаешь плохим?

Alexander
И какая альтернатива? При работе с EFCore я исполь...

dbContext.Where(condition).Select(selector).ToArrayAsync() Все оптимально, база сделала все самым лучшим способом :)

Alexey Brovko
Потому что использующий код не знает что было заин...

Я не очень понимаю почему это проблема метода. Если тебе нужен метод GetMenu, но без ICollection внутри, то можно * сделать две версии метода - с коллекциями и без * билдить инклюды по необязательному входному параметру, всё же инклюд это IQueryable, который можно обернуть в if и не будет проблем. "не знает" это ерунда, если у тебя метод задокументировал. Для чего нам XML-комментарии, как не для того, чтобы навести на название метода курсор и быстро узнать о возможностях метода?

Alexander
И какая альтернатива? При работе с EFCore я исполь...

Я ничего плохим не считаю, я даже согласен, что иногда инклуд нужен. Как и навигационные свойства. Но лучший ли это путь надо подумать трижды

Alexey Brovko
dbContext.Where(condition).Select(selector).ToArra...

это для многие-ко-многим? Как с этим работать? Пример: Systems и Users. В каждой системе много пользователей, у каждого пользователя много систем.

Alexander
это для многие-ко-многим? Как с этим работать? Пр...

Пока не поинмаю, какая разница, у тебя в EFе уже есть вложенные свойства, разве нет? В чем проблема с их маппингом?

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта