Asp.net Identity DbContext

时间:2014-02-10 13:14:05

标签: c# asp.net asp.net-mvc entity-framework

我有以下设置:

  1. 我通过创建自己的类并从Identity类继承来自定义IdentityUser和IdentityRole类

  2. 我也有基于实体框架的域模型(通过edmx-Designer)

  3. 由于我想通过使用常规域模型中的类来扩展IdentityUser,因此我将数据上下文的TT更改为<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : IdentityDbContext<ApplicationUser>

    在生成的文件之外,我已经从ApplicationDataContext创建了一个部分类,如下所示:

    public partial class ApplicationDbContext
    {
    
        protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
    
            modelBuilder.Entity<IdentityUser>().ToTable("User", "portal").Property(p => p.Id).HasColumnName("UserId");
            modelBuilder.Entity<ApplicationUser>().ToTable("User", "portal").Property(p => p.Id).HasColumnName("UserId");
            modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "portal");
            modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins", "portal");
            modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "portal");
            modelBuilder.Entity<UserStoreAssignment>().ToTable("UserStoreAssignment", "portal");
            modelBuilder.Entity<ApplicationRole>().ToTable("Roles", "portal");
        }
    
        new public DbSet<ApplicationRole> Roles { get; set; }
    }
    

    班级UserStoreAssignment指向位于域模型中的班级Store。一切都可以成功建立。但是一旦我从应用程序中开始访问ApplicationUser,我就会收到以下错误消息:

      

    实体类型ApplicationUser不是当前上下文模型的一部分。

    有谁知道,问题可能是什么?

1 个答案:

答案 0 :(得分:0)

听起来您正在尝试将ApplicationUser映射到表,但您实际上并未通过Designer将ApplicationUser添加到上下文中。