Я только что обновил свою таблицу AspNetRoles с помощью OnModelCreating следующим образом:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var role = modelBuilder.Entity<IdentityRole>()
.ToTable("AspNetRoles");
role.Property(r => r.Name)
.IsRequired()
.HasMaxLength(256)
.HasColumnAnnotation("Index",new IndexAnnotation(new IndexAttribute("RoleNameIndex") { IsUnique = false } ));
}
Я установил партию IsUnique как ложную.
Однако, когда я пытаюсь создать роль, возвращается исключение, в котором говорится, что Роль "Роль" уже существует.
public bool Save(SaveRolesDetailsViewModel Input)
{
bool result = false;
AspApplicationRoles data = new AspApplicationRoles();
var store = new ApplicationRoleStore(new ApplicationDbContext());
var manager =new ApplicationRoleManager(store);
try
{
var role = new AspApplicationRoles
{
Id = Guid.NewGuid().ToString(),
Name = Input.RoleName,
ApplicationId = Input.ApplicationId
};
var res = manager.Create(role);
if (res.Succeeded)
{
var add = dbContext.AspApplicationRoles.Add(role);
result = true;
}
else
{
result = false;
}
}
catch (Exception e)
{
logger.Error(e, AspNetEventLogs.Error);
}
return result;
}
Как заставить таблицу AspNetRoles принимать одинаковые имена?