2013-11-19 3 views
4

Может ли кто-нибудь описать мне, как вы удаляете роли с идентификатором asp.net. Я попытался следующие, но это не сработало, и я получил Указанный метод не поддерживается ошибка:Удаление ролей с идентификатором Asp.net

public async Task DeleteRole(string role) 
    { 
     // delete role 
     var roleStore = new RoleStore<IdentityRole>(new Context()); 
     await roleStore.DeleteAsync(new IdentityRole(role)); 


    } 

Не уверен, если это имеет в виду что-то с моей асинхронной логики, или конкретно с идентичностью asp.net сам. Тем не менее кто-то может продемонстрировать мне, как правильно сделать эту работу. В настоящее время практически нет документации для новой системы идентификации для asp.net.

+0

Что вы являетесь поставщиком ролей? Он обычно указан в веб-конфигурации. –

ответ

6

Контекст Identity (IdentityDbContext) содержит хранилище ролей. Таким образом, вы бы (при условии, AppDB ваш контекст):

var role = AppDb.Roles.Where(d => d.Name == "my role name").FirstOrDefault(); 
AppDb.Roles.Remove(role); 
AppDb.SaveChanges(); 

Вы в основном относиться к нему как обычный EntityFramework DbSet, он унаследовал от IdentityDbContext.

+0

Спасибо! Это решило мою проблему. Я занимаюсь этим последние два дня. Хотя я доволен этим решением, какова сделка с методом RoleStore DeleteAsync? Это значит, что его используют так, как я его использовал? – user1206480

+1

Не совсем уверен TBH. Документация по новой ASP.NET Identity является ужасной и удручающей попыткой помочь нам по-настоящему привлечь нас к правильному пути. Это больше проб и ошибок и поиск и поиск метода, чтобы заставить это работать. –

+2

Вы используете API правильно. Если вы посмотрите на DeleteAsync с декомпилятором, вы увидите, что он выбрасывает исключение NotImplementedException и поэтому не дает возможности удалить роль! – OdeToCode

Смежные вопросы