C# EF 6 code first找不到对象“;dbo.AspNetUserRoles“;因为它不存在或您没有权限

C# EF 6 code first找不到对象“;dbo.AspNetUserRoles“;因为它不存在或您没有权限,c#,entity-framework,entity-framework-6,asp.net-identity,entity-framework-migrations,C#,Entity Framework,Entity Framework 6,Asp.net Identity,Entity Framework Migrations,我正在尝试使用代码优先的方法将表和数据迁移到现有数据库。 当我运行添加迁移[somename]时,出现以下异常: Cannot find the object "dbo.AspNetUserRoles" because it does not exist or you do not have permissions. 现在是这样,我的表被命名为aspnet_Users、aspnet_UserRoles等。您可以看到我生成的迁移文件将表名大写。我试图手动重命名这些,不幸的是没有任何进展。我似乎不

我正在尝试使用代码优先的方法将表和数据迁移到现有数据库。
当我运行添加迁移[somename]时,出现以下异常:

Cannot find the object "dbo.AspNetUserRoles" because it does not exist or you do not have permissions.
现在是这样,我的表被命名为aspnet_Users、aspnet_UserRoles等。您可以看到我生成的迁移文件将表名大写。我试图手动重命名这些,不幸的是没有任何进展。我似乎不知道这是什么原因

我的数据库实体如下所示:

public partial class MyDBContext : IdentityDbContext<ApplicationUser>
{
    public FunkaDbContext()
        : base("name=MyDBContext", throwIfV1Schema: false)
    {
        Database.SetInitializer<MyDBContext>(new DropCreateDatabaseIfModelChanges<MyDBContext>());
    }

    public virtual DbSet<educationSignup> EducationSignups { get; set; }
    public virtual DbSet<ParticipantsInformation> ParticipantsInformations { get; set; }
    public virtual DbSet<PaymentInformation> PaymentInformations { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        modelBuilder.Entity<educationSignup>()
            .HasMany(e => e.participantsInformations)
            .WithRequired(e => e.educationSignup)
            .HasForeignKey(e => e.SignupId)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<educationSignup>()
            .HasMany(e => e.paymentInformations)
            .WithRequired(e => e.educationSignup)
            .HasForeignKey(e => e.SignupId)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<IdentityUser>().HasKey<string>(u => u.Id);
        modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
        modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
    }

    public static MyDbContext Create()
    {
        return new MyDbContext();
    }
}
公共部分类MyDBContext:IdentityDbContext { 公共FunkaDbContext() :base(“name=MyDBContext”,throwifvv1schema:false) { SetInitializer(新的DropCreateDatabaseIfModelChanges()); } 公共虚拟数据库集教育签名{get;set;} 公共虚拟数据库集参与者信息{get;set;} 公共虚拟数据库集付款信息{get;set;} 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { 基于模型创建(modelBuilder); modelBuilder.Conventions.Remove(); modelBuilder.Entity() .HasMany(e=>e.参与者信息) .需要(e=>e.educationSignup) .HasForeignKey(e=>e.SignupId) .WillCascadeOnDelete(假); modelBuilder.Entity() .HasMany(e=>e.PaymentInformation) .需要(e=>e.educationSignup) .HasForeignKey(e=>e.SignupId) .WillCascadeOnDelete(假); modelBuilder.Entity().HasKey(u=>u.Id); modelBuilder.Entity().HasKey(r=>r.Id); modelBuilder.Entity().HasKey(r=>new{r.RoleId,r.UserId}); } 公共静态MyDbContext Create() { 返回新的MyDbContext(); } }
删除数据库中的迁移历史记录,并对上下文使用底部映射

 base.OnModelCreating(modelBuilder);
 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

 modelBuilder.Entity<IdentityUserRole>()
            .HasKey(r => new { r.UserId, r.RoleId })
            .ToTable("AspNetUserRoles");

 modelBuilder.Entity<IdentityUserLogin>()
            .HasKey(l => new { l.LoginProvider, l.ProviderKey, l.UserId })
            .ToTable("AspNetUserLogins");
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove();
modelBuilder.Entity()
.HasKey(r=>new{r.UserId,r.RoleId})
.ToTable(“AspNetUserRoles”);
modelBuilder.Entity()
.HasKey(l=>new{l.LoginProvider,l.ProviderKey,l.UserId})
.ToTable(“AspNetUserLogins”);

删除数据库中的迁移历史记录,并对上下文使用底部映射

 base.OnModelCreating(modelBuilder);
 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

 modelBuilder.Entity<IdentityUserRole>()
            .HasKey(r => new { r.UserId, r.RoleId })
            .ToTable("AspNetUserRoles");

 modelBuilder.Entity<IdentityUserLogin>()
            .HasKey(l => new { l.LoginProvider, l.ProviderKey, l.UserId })
            .ToTable("AspNetUserLogins");
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove();
modelBuilder.Entity()
.HasKey(r=>new{r.UserId,r.RoleId})
.ToTable(“AspNetUserRoles”);
modelBuilder.Entity()
.HasKey(l=>new{l.LoginProvider,l.ProviderKey,l.UserId})
.ToTable(“AspNetUserLogins”);

为什么要在modelCreating()上添加最后3行
method?因为我想将AspNet标识映射到我的自定义应用程序用户。这可能是问题的原因吗?已经添加了这些配置。您不需要添加它们。为什么要在modelCreating()
方法上添加最后3行?因为我想将AspNet标识映射到我的自定义应用程序用户。这可能是问题的原因吗?已经添加了这些配置。您不需要添加它们。