3
respostas

Dúvida sobre o Identity

Eu tenho por exemplo 3 tabelas... membros, eventos e financeiro. Eu estou usando o Entityframework, mas quero fazer controle de roles, senhas, etc para Membros. Na aula você fala que não vamos utilizar o entityframework para gravas os dados dos usuários. Eu devo fazer uma estrutura separada para a tabela de membros utilizando o identity e uma para as demais tabelas? Hoje eu tenho uma classe que herda o DbContext e cria as tabelas com o Dbset. E as minhas camadas DAO recebem esse contexto para realizar o CRUD.

3 respostas

Olá, Willian.

Um membro representa um usuário? O ideal é usar a mesma entidade nas duas situações!

Se você já possui uma classe que herda DbContext, você pode mudar para uma opção genérica do IdentityDbContext, como a IdentityDbContext<TUser>.

Usando esta versão genérica será necessário mudar a herança de sua classe membro para herdar do tipo IdentityUser. Se isto não for possível, você deverá usar a classe genérica IdentityDbContext<TUser, TRole, TKey, TUserLogin, TUserRole, TUserClaim> mas, de qualquer maneira, você deverá mudar a herança de sua classe Membro - por conta da implementação do Identity para o Entity Framework.

O restante deverá continuar como está, mas, talvez alguns ajustes sejam necessários por conta de conflitos que existem na classe IdentityUser e sua classe existente Membro.

Sim a classe Membros é um usuário.

Hoje minha classe de contexto está assim: public class SCPIContext : DbContext { public DbSet Membros { get; set; } public DbSet Eventos { get; set; } public DbSet Financeiro { get; set; }

public SCPIContext(DbContextOptions options) : base(options) {

} }

E minha classe que faz o CRUD recebe esse contexto.

public class MembrosDao : IMembrosDao {

public SCPIContext context; public MembrosDao(SCPIContext context) { this.context = context; }

public void Adiciona(Membros membro) { context.Membros.Add(membro); context.SaveChanges();

} ..... }

Minha classe Membros já está herdando o IdentityUser.

No caso eu deveria mudar a herança da classe SCPIContext? Essa mudança não afeta as demais classes?

Sim, você pode mudar a herança de SCPIContext e isto não afetará suas outras entidades!