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

Дарова ребят, есть вопросик из категории EF + Automapper +

DTO.
Есть довольно объемный проект. Нужно впилить в проект Soft Delete (мягкое удаление - запись не удаляется, а помечается что-то вроде IsDeleted = true + еще пара свойств, типо кто удалил).
У проекта куча сущностей, надо сделать возможность мягкого удаления для нескольких из них (штук 10).
У проекта есть уровень Core (что-то вроде бизнес логики и уровень бд, дальше там развлетвления на портирование - веб, wpf, xamarin).
Core содержит в себе DTOшки и сервисы (сервисы работают только с DTO - принимают и отдают). Все это дело между собой маппится Automapper'ом. (Сущности и DTO, ну и дальше соответственно).

Идея состоит в том, что есть интерфейс для Soft Delete (выше описал основные свойства). Этот интерфейс имлементиться и для DTO и для Сущностей. Если с вопросом мягкого удаления все хорошо, то с вопросом восстановления после мягкого удаления не очень.

Есть метод Restore<T> (T dto) where T : BaseDTO, ICanSoftRemoval, ....
{
.... какие-то действия .....
Uow.Repository<???> ().Update(Mapper.Map<T, ???> (dto));
}

Относительно того, почему юзается кастомная версия Uow & Repository - приложение работает сразу с 2 база данных (NoSQL & SQL).

Как можно красиво узнать какому типу следует маппить dto и тип репозитория?

- словарь типов, не очень как по мне идея и как-то костыльно слишком...
- передавать в Restore сразу 2 дженерика, тоже не очень, так как метод будет вызываться в более верхнем слое, который в принципе не шарит, что такое база данных и и что там такое.

5 ответов

5 просмотров

https://www.thereformedprogrammer.net/ef-core-in-depth-soft-deleting-data-with-global-query-filters/

Царь- Автор вопроса
Qart2003
https://www.thereformedprogrammer.net/ef-core-in-d...

Спасибо конечно, но я это читал (по крайней мере взглядом пробегал), там нету информации относительно решение мое задачи. С точки зрения базовой имплементации идеи Soft Delete с EF или без него все просто. У меня проблема относительно Automapper'a скорее и взаимодействия слоя логики и базы данных в данном случае. Я ищу вариант элегантного решения задачи - конечно можно написать N методов на Restore любой DTOшки. Но это немного странный подход. Подход с словарем соотношения типом меня тоже не очень радует - тогда резко пропадает одна из функций автомаппера (соотносить типы автоматически). Я описывал проблему максимально подробно, так как возможно кто-то мог предложить идею внесения изменений не в слой логики, а в слой базы данных (напомню, у там юзается 2 базы данных - Mongo и MySQL), именно поэтому паттерн репозиторий и UOW имплементятся кастомно, а не берутся с того же EF'a. Но спасибо за ваше внимание)

Царь- Автор вопроса
Qart2003
Словарь строить автоматически

Подробнее?) Кем строиться? Как вытащить тип сущности которому следует приводить дтошку?

Царь
Спасибо конечно, но я это читал (по крайней мере в...

Вот как раз тк две бд, то нужен сервис, который будет строить словарь автоматом, тогда будет пофиг сколько бд, их кстати и на ентити может быть больше одной

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Подскажите пожалуйста, а я могу вот такую штуку использовать? rpc, только реализованное в реббите https://www.rabbitmq.com/tutorials/tutorial-six-php ( или https://habr.com/ru...
Artyom
11
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
Парни, спасайте. RAD Studio 12 творит какую-то дичь. У меня есть метод (event), который вызывает другой метод, т.е. он состоит из 1-й строки вызова. Ставлю бряк на event, запу...
Eugene Krasnikov (ᴊɪɴ x)
3
Карта сайта