EF 6代码优先找不到对象“dbo.AspNetUserRoles”,因为它不存在或者您没有权限

时间:2015-09-07 19:10:14

标签: c# entity-framework entity-framework-6 asp.net-identity ef-migrations

我正在尝试使用代码优先方法将表和数据迁移到现有数据库 当我运行Add-Migration [somename]时,我最终得到以下异常:

<pre style="word-wrap: break-word; white-space: pre-wrap;">
"[{"Asset":1112, "Name":"Test"}, {"Asset":223, "Name":"Drill"}]"
</pre>

现在这是交易,我的表被命名为aspnet_Users,aspnet_UserRoles等。正如您所看到的,我生成的migration-file将表名称大写。我试图手动重命名,不幸的是没有任何进展。我似乎无法弄清楚是什么原因引起的。

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

Cannot find the object "dbo.AspNetUserRoles" because it does not exist or you do not have permissions.

1 个答案:

答案 0 :(得分:0)

删除db中的迁移历史记录并使用底层映射

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