умолчанию?
Я так же могу использовать get запрос помимо ридонли чтобы получить сущность и потом изменить тогда трекинг необходим или можно обойтись без него?
всё под cqrs пашет
Автор EfCoreInAction советуют любой запрос который выгружает только данные(рид онли запросы) помечать как NoTracking(). А как ты с репой это сделаешь? Если к примеру при переиспользовании метода репы в одном случае тебе нужны данные для изменения, т.е трекер нужен, а в другом не нужен?
Репы нужно правильные делать, они не для переиспользования, а дженерик репы, это мягко говоря вообще не репы, название одно.
А как в таком случае с AsNoTracking()? Если у репы есть метод GetAll(), к примеру. И в одном случае вы достаете из репы сущности редактирования, а в другом для маппинга их в дто?
Не может быть у правильной репы такого метода )
Делать условные GetProductById и GetProductByIdReadOnly дикость?
*у меня ебало отвалилось* А как вы допустим вытаскиваете все сущности из бд, если стоит такая цель, если в репе этого метода нет?
Опытные ребята подскажут точнее, но как мне кажется, так методов в репе расплодится много и уже легче просто дбконтекст напрямую заинжектить в сервис/хендлер. Так и гибкости больше в плане запросов и кода вроде как меньше)
Может если гет алл фильтруется по юзер айди и с пагинацией
Ну так возьмите ef для таких целей. репозиторий призван сделать код понятнее, и перевести термины БД в термины БЛ, Что значит с точки зрения БЛ, метод GetAll? Что там будет? Какие связанные таблицы вместе прилетят? Какая моделька будет на выходе? Осмысленно должно называться.
Особенно такой, с гетоллом ))
Да, я тоже постепенно прихожу к тому, что репы юзлесс в свящке с еф. И как я понял, в клоните к тому, что репы нужны, если другой способ доступа к данным. А есть хотя бы малый пример метода правильной репы? Спасибо за ответ!
Не всегда, если работам со сложной БЛ и ДДД, без них никак. Если нет, то им откровенно мало применений толковых, кроме потешить себя мыслей что мы спрятали контекст за ними ))
Только осторожнее, есть адепты слоенки, они за такие высказывания побъют )
Я не здамся без бою!
Я процедуры пишу в БД и вызываю на бекенде
Объясни пожалуйста, очень хотелось бы понять, что ты имеешь ввиду.
Ну например из ДДД, пример правильной репы: У нас есть сучность заказа, в ней имеются метод например добавить товар, и отправить в производство, делаем репу, ОрдерРепа, в которой два метода получить сучность заказа, и сохранить сучность заказа. все остальное делается методами в самом заказе. а репозиторий собирает из всех таблиц модель БЛ заказа, и при записи он же ее обратно распихивает.
Сочуствую )) но помочь ничем не могу )
А что мешает вытащить все тоже самое через контекст? Достань фулловый агрегат, выполняй на нем нужные бл операции и сохраняй через контекст?
Ну и все равно, вот вам нужно отдать список всех ордеров, разве не логично что в репе должен быть такой метод?
Ничего не мешает, но фокус в том что в этом случае структура таблиц просочится в уровень БЛ, например для проверки возможности запуска заказа нужно знать оплачен он или нет, в БД, у вас это куча таблиц где оплата бегает, а вам в модели нужно только булево поле.
Нет таково в ДДД, там не нужна куча ордеров, это нужно для вывода на экран, например в апишке отдать, и там вам никто не мешает прям в контроллере прям из контекста все собрать и выплянуть презент модель. Мало того Скотт Миллет в своей книге описыват такую схему, и отдельно упоминает что не надо при построении отчетов пользоваться агрегатами ДДД, это будет капец треш и угар, делайте отдельно.
Понял, спасибо за мысли, интересно.
Это все в книгах пишуть, не мои идеи )) но мне они нравятся, не все конечно ))
Я быдло, книги не читаю(шютка)
Обсуждают сегодня