ASPNETUSER как дочерний элемент для другой таблицы

#c# #asp.net-core #asp.net-identity #clean-architecture

#c# #asp.net-ядро #asp.net-идентификатор #чистая архитектура

Вопрос:

Я хотел бы знать, может ли кто-нибудь помочь мне с этой небольшой дилеммой…

Я следую настройке проекта чистой архитектуры с использованием .net core 3.1. С проектами:

  • API
  • Домен
  • Инфраструктура
  • Приложение

В домене я не ссылаюсь ни на какие проекты (или пакеты), все остальное ссылается на него.

И у меня есть таблица ниже в домене:

Таблица компании

Позже я добавил свой идентификатор в инфраструктуру, в которой у меня есть ApplicationUser, который расширяет IdentityUser.

Итак, сценарий выглядит следующим образом:

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

Итак, у меня вопрос: что мне сделать, чтобы у меня была компания с набором пользователей, также без необходимости добавлять ссылку из домена в инфраструктуру

Комментарии:

1. Используете ли вы шаблон по умолчанию, созданный ASP.NET Ядро WebAPI -чистая архитектура? Разделены ли база данных идентификаторов и база данных по умолчанию?

2. Не шаблон по умолчанию нет, я добавил идентификатор отдельно в проект инфраструктуры.

Ответ №1:

Обычным способом решения этой проблемы является определение абстракции вашего пользовательского класса или интерфейса на уровне домена. Эта абстракция используется в классе company, и пользовательская реализация в проекте инфраструктуры происходит от нее.

Если наследование не является опцией, вы можете выбрать интерфейс в проекте домена и иметь адаптер в проекте инфраструктуры, который оборачивает фактическую пользовательскую реализацию, предоставляя доступ к ее свойствам.