Map tables using fluent api in asp.net MVC5 EF6?

前端 未结 3 1548
礼貌的吻别
礼貌的吻别 2020-12-17 17:03

I am trying to add profile/Membership information into my MVC5 application and adding configuration mappings.

I get the following error message:

相关标签:
3条回答
  • 2020-12-17 17:15

    Call base.OnModelCreating(modelBuilder) after configuration added.

    0 讨论(0)
  • 2020-12-17 17:21

    Follow these steps around OnModelCreating method and test after each one to be aware of taking effect:

    1. Make sure you have one Context to prevent of their rule conflicts.
    2. Call base.OnModelCreating(modelBuilder); inside the mentioned method (first of all)
    3. Add the followings plus previews step in the method:


    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 });
    
    0 讨论(0)
  • 2020-12-17 17:32

    Calling base.OnModelCreating(modelBuilder) did not solve the issue for me.

    The behavior of Microsoft.AspNet.Identity.EntityFramework seems to be different in VS2013-Preview, VS2013-RC, and VS2013-RTM. I'm using the RTM version.

    After inheriting from IdentityUser I had to recreate all other primary keys in the model to make it work:

    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 });
        }
    

    (See Configuring/Mapping Properties and Types with the Fluent API)

    I guess work on AspNet.Identity.EntityFramework is ongoing and this will be fixed (?)

    0 讨论(0)
提交回复
热议问题