Таблицы карт с использованием свободного api в asp.net MVC5 EF6?

asp.net-identity claims-based-identity entity-framework-6

Вопрос

Я пытаюсь добавить информацию о профиле / членстве в мое приложение MVC5 и добавить сопоставления конфигурации.

Появляется следующее сообщение об ошибке:

my.Models.IdentityUserLogin:: EntityType 'IdentityUserLogin' не имеет ключа. Определите ключ для этого EntityType.

my.Models.IdentityUserRole:: EntityType 'IdentityUserRole' не имеет определенного ключа. Определите ключ для этого EntityType.

IdentityUserLogins: EntityType: EntitySet «IdentityUserLogins» основан на типе «IdentityUserLogin», который не имеет определенных ключей.

IdentityUserRoles: EntityType: EntitySet «IdentityUserRoles» основан на типе «IdentityUserRole», который не имеет определенных ключей.

public class ApplicationUser : IdentityUser
{
    public string City { get; set; }
    public string Discriminator { get; set; }

    public string Address { get; set; }     
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new ApplicationUserConfiguration());           
    }
}

Популярные ответы

Вызов base.OnModelCreating(modelBuilder) не решил проблему для меня.

Поведение Microsoft.AspNet.Identity.EntityFramework, похоже, отличается в VS2013-Preview, VS2013-RC и VS2013-RTM. Я использую версию RTM.

После наследования от IdentityUser мне пришлось воссоздать все остальные первичные ключи в модели, чтобы заставить ее работать:

public class ApplicationUser : IdentityUser
{
    public string DisplayName { get; set; }
}


public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext() : base("DefaultConnection") { }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
        modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
        modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
    }

(См. « Конфигурирование / Сопоставление свойств и типов с Fluent API» )

Я думаю, работа над AspNet.Identity.EntityFramework продолжается, и это будет исправлено (?)



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему