在asp.net MVC5 EF6中使用流暢的api映射表?

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)並沒有為我解決問題。

在VS2013-Preview,VS2013-RC和VS2013-RTM中,Microsoft.AspNet.Identity.EntityFramework的行為似乎有所不同。我正在使用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
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因