Как мы ссылаемся на dbContext с уровня приложения в DDD для запросов?C#

Место общения программистов C#
Ответить
Anonymous
 Как мы ссылаемся на dbContext с уровня приложения в DDD для запросов?

Сообщение Anonymous »

Вот предположения, которые я собрал в ходе обширных исследований:
  • "Модели предметной области отделены от персистентных сущностей".
  • "Лучше всего использовать шаблон репозитория на стороне команды (операции записи), поскольку он позволяет загружать агрегат целиком."
  • "Для запросов ( операций чтения) нет особой пользы и, возможно, может оказаться нелогичным добавлять абстракцию поверх Efcore (например, с помощью шаблона репозитория)".
Итак, теперь у меня остался базовый уровень с моделями предметной области, уровень инфраструктуры с объектами персистентности и уровень приложения с объектами передачи данных, которые сопоставляют сущности персистентности и модели предметной области с уровнем представления.
Для меня все это имело смысл, пока я не понял, что для того, чтобы мои запросы уровня приложения использовали dbContext, мне нужна зависимость от уровня инфраструктуры. Однако уровень инфраструктуры зависит от уровня приложения в отношении таких вещей, как аутентификация, ведение журнала, ObjectStorage и т. д. Это приводит к циклической ошибке зависимости.
Я не могу определить "IAppDbContext" интерфейс на уровне приложения, поскольку уровень приложения не знает об объектах персистентности, определенных на уровне инфраструктуры.
Интересно узнать, каким может быть решение этой проблемы?
Решения, о которых я подумал:
  • Определите службу для каждого запроса на уровне приложения и реализуйте ее на инфраструктурном уровне. Но, как вы понимаете, это может быть очень неудобно.
  • Разделить уровень инфраструктуры на два уровня: уровень инфраструктуры и уровень персистентности и позволить приложению зависеть от персистентности, убрав ошибку циклической зависимости, но это кажется как хак.
Я, очевидно, понимаю, что иногда мне следует «нарушать правила», поскольку некоторые вещи работают лучше в теории, чем на практике, но цель этот вопрос заключается в том, чтобы изучить решения, которые могут использовать другие.

Подробнее здесь: https://stackoverflow.com/questions/787 ... or-queries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»