Я разрабатываю многопользовательское веб-приложение с ASP.Net MVC и Identity 2.0. Я продлил IdentityRole так:Повторяющиеся имена ролей на идентификаторе и многоуровневости Asp.Net
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name) : base(name) { }
public string TenantId { get; set; }
}
Это потому, что каждый арендатор будет иметь индивидуальные наборы ролей, как «Администратор», «Персонал» и т.д.
Но проблема в том, когда я добавить новая роль, если у «Tenant A» есть роль «Admin», когда я добавляю в «Tenant B» роль «Admin», я получаю ошибку IdentityResult, потому что имя «Admin» взято ... Это очевидно, потому что «Name» поле на столе AspNetRoles уникален ...
IdentityResult roleResult = await RoleManager.CreateAsync(
new ApplicationRole
{
Name = "Admin",
TenantId = GetTenantId()
});
Но как я могу настроить ASP.Net Identi так что поле «Имя» в «AspNetRoles» может быть уникальным с «TenantId», а не только? Я нашел информацию о продлении IdentityRole (как я сделал добавление поля), но не о его изменить или заменить его ...
Сэм, когда я пытаюсь свое решение, команда надстройки миграции вызывает эту ошибку: Конфликтующие параметры конфигурации были указаны для столбца «Название» таблицы «IdentityRole»: Index свойство «IsUnique» = «False» атрибут конфликты с атрибутом атрибута index 'IsUnique' = 'True' –
См. мое обновленное сообщение. –