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

Ale*_*482 13 claims-based-identity entity-framework-6 asp.net-identity

我正在尝试将配置文件/成员身份信息添加到我的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());           
    }
}
Run Code Online (Sandbox Code Playgroud)

fli*_*lip 22

打电话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 });
    }
Run Code Online (Sandbox Code Playgroud)

(请参阅使用Fluent API配置/映射属性和类型)

我想在AspNet.Identity.EntityFramework上工作正在进行中,这将被修复(?)

  • 这解决了我的一切!非常感谢 - 应该标记为已回答:) (2认同)

jd4*_*d4u 18

base.OnModelCreating(modelBuilder)添加配置后调用.

  • 如果这不起作用..在配置之前调用它 (2认同)