Могу ли я использовать тот же dbcontext для идентификации asp

1

Можно ли указать asp identity использовать тот же dbcontext, что и приложение dbcontext? Мои таблицы должны относиться к таблице идентичности. В каждой таблице есть поле createuser и edituser, которое связано с таблицей идентификации. Если asp использует свой собственный dbcontext, тогда я должен также добавлять сущности и сопоставление с таблицами идентификации в приложение dbcontext. Является ли лучший подход к этой ситуации? Я использую сущность framework code first 6 и asp mvc 5.

РЕДАКТИРОВАТЬ

Основываясь на ответах ниже, я могу использовать один и тот же dbcontext, пока мой dbcontext унаследован от IdentityContext.

Мой вопрос:

Нужно ли мне все-таки создавать класс сущности и карту? Как сопоставить отношения между моими таблицами с идентификатором?

Это мой текущий dbcontext

    public partial class MyContext : DbContext
{
    static MyContext()
    {
        Database.SetInitializer<MyContext>(null);
    }

    public MyContext()
        : base("Name=MyContext")
    {
        this.Configuration.ProxyCreationEnabled = false;
        this.Configuration.LazyLoadingEnabled = false;
    }

    public new DbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity
    {
        return base.Set<TEntity>();
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new AspNetRoleMap());
        modelBuilder.Configurations.Add(new AspNetUserClaimMap());
        modelBuilder.Configurations.Add(new AspNetUserLoginMap());
        modelBuilder.Configurations.Add(new AspNetUserMap());
        modelBuilder.Configurations.Add(new PersonMap());
    }
Теги:
entity-framework
asp.net-mvc
asp.net-identity
ef-code-first

4 ответа

1
Лучший ответ

Ваш класс контекста должен быть унаследован от IdentityDbContext вместо DbContext. IdentityDbContext содержит некоторую конфигурацию для IdentityUser, IdentityRole, IdentityUserLogin, IdentityUserRole, IdentityUserClaim и имеет IDbSet Users и IDbSet Roles.

public class MyContext : IdentityDbContext<IdentityUser or your own UserEntity>
{
   .
   .
   .
}
  • 0
    Пожалуйста, смотрите мой отредактированный вопрос.
0

В EF 6.0 лучше всего будет иметь два отдельных контекста, а затем использовать одну и ту же строку соединения и две разные конфигурации миграции в соответствии с несколькими контекстами БД в одной и той же БД и приложении в EF 6 и First First Migrations.

0

Мой вопрос:

Нужно ли мне все-таки создавать класс сущности и карту? Как сопоставить отношения между моими таблицами с идентификатором?

Нет, все ваши классы Identity уже сопоставлены. Если вы хотите добавить отношение к своей Identity, вы можете сделать это, как обычно, в методе OnModelCreating в самом контексте, относящемся к вашим классам Identity (например, IdentityRole, IdentityUserRole, IdentityUser).

Для получения дополнительной информации о том, как это сделать, взгляните на эту статью.

0

Конечно

Когда вы создаете экземпляр вашего User Manager, просто переходите через User Store вместе со своим собственным dbContext.

new UserManager<IdentityUser>(new UserStore<IdentityUser>(new MyDbContext()))
  • 1
    Идентификационные данные используют IdentityDbContext. Есть ли недостатки в использовании обычного DbContext?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню