2013-11-22 3 views
1

Я хотел бы использовать IdentityDbContext для моей безопасности в своем приложении mvc5. У моего приложения datacontext должны быть отношения с моим подклассом IdentityUser в IdentityDbContext. Когда я пытаюсь создать эти отношения (многие-ко-многим: а MyIdentityUser имеет много Foo-х и Foo имеет много MyIdentityUser в), я получаю «ключ не определяют» ошибки:
MyNamespace.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.Взаимоотношения между контекстами EF6 Multi-tenant

This Question, кажется, указывает, что я не так, и должен создать единый контекст, в котором есть все. Мой вопрос таков: каков правильный подход к тому, чтобы один узел базы данных имел типы безопасности MVC5 (поэтому я могу использовать атрибуты UserManager, Authorize и т. Д.) Вместе с остальными данными моего приложения?

Должен ли я просто подкласс IdentityDbContext для моей «uber-model»? Попробуйте воссоздать сущности и сопоставления в IdentityDbContext? Что-то другое?

ответ

1

Создание двух следующих классов

public class IdentityUserLoginConfiguration : EntityTypeConfiguration<IdentityUserLogin> 
{ 

    public IdentityUserLoginConfiguration() 
    { 
     HasKey(iul => iul.UserId); 
    } 

} 

public class IdentityUserRoleConfiguration : EntityTypeConfiguration<IdentityUserRole> 
{ 

    public IdentityUserRoleConfiguration() 
    { 
     HasKey(iur => iur.RoleId); 
    } 

} 

В методе OnModelCreating в приложениях DbContext добавить две конфигурации, описанные выше модели:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

     modelBuilder.Configurations.Add(new IdentityUserLoginConfiguration()); 
     modelBuilder.Configurations.Add(new IdentityUserRoleConfiguration()); 

    } 

Это должно теперь избавиться от методов ошибок когда ваша модель создается. Это было для меня.

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