Модификация / Литье Net Ядро для моих нужд (мультитенантный дизайн webapi) - PullRequest
1 голос
/ 28 февраля 2020

Я создаю мультитенантное приложение с точечным ядром net и хотел бы использовать идентификационную базовую инфраструктуру. Сначала я попытаюсь обобщить дизайн моей БД, связанный с пользователями / арендаторами / заявками, чтобы поместить вас в картину.

У меня есть таблица, которая создает отношения между пользователями и арендаторами (Users_Tenants). Это отношение многие ко многим. Пользователь может принадлежать многим арендаторам, а арендатор может иметь много пользователей.

С другой стороны, у меня есть четко определенный набор утверждений пользователя, определяющих разрешения, такие как can_list_x, can_delete_x, can_edit_x et c. Я хотел бы, чтобы эти заявки хранились в классе, унаследованном от IdentityUserClaim и посеянном при начальной миграции, эту таблицу можно было бы назвать (ApplicationUserClaim)

И, наконец, у меня будет таблица, которая создает отношения между User_Tenants и ApplicationUserClaim (Claims_UserTenants). Это строит отношения между парой Пользователь, Арендатор и назначенной ей претензией. Опять же, это отношения «многие ко многим».

Как видите, в моем дизайне я нигде не говорю о ролях. И так я хочу. Итак, мой DBContext наследуется от IdentityUserContext вместо IdentityDBContext, как указано в документации. Я наследую его, передавая свой ApplicationUser и ApplicationUserClaim в список необходимых обобщений:

public class ApplicationDbContext : IdentityUserContext<ApplicationUser,string, ApplicationUserClaim, IdentityUserLogin<string>, IdentityUserToken<string>>
{
}

Одна из основных проблем заключается в том, что когда я обновляю свою базу данных из миграции, ApplicationUserClaim имеет поле с именем UserId, которое я не не хочу, потому что теперь связь создается с таблицей Claims_UserTenants.

Итак, мои вопросы:

  1. Можно ли удалить это поле? Я попробовал это:

    modelBuilder.Entity (ApplicationUserClaim) (). Игнорировать (o => o.UserId)

, но не сработало.

Можно ли изменить Identity Core, чтобы он соответствовал моему дизайну БД? Или лучше отказаться от него и создать собственную систему? Надеюсь, мне не нужно этого делать, потому что система идентификации обеспечивает множество встроенных функций ...

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...