好吧,我的表IdentityUserRole还有两个不需要的列,分别是AppUser_Id和IdentityRole_Id。
我在尝试在角色中注册用户时遇到了麻烦。 我发现,如果我将UserId中的内容复制到AppUser_Id中,那么应用程序就可以完美运行。
通过Fluent API,我可以在这里定义键:
modelBuilder.Entity<IdentityUserRole>()
.HasKey(iur => iur.UserId);
modelBuilder.Entity<IdentityUserLogin>()
.HasKey(iul => iul.UserId);
modelBuilder.Entity<CourseModel>()
.HasKey(c => c.CourseID);
modelBuilder.Entity<FeedbackModel>()
.HasKey(f => f.FeedBackId);
我必须这样做,因为NuGet控制台出现了一些错误,因为IdentityUserRole没有定义密钥,所以我这样做了。
我100%确定那是什么让我感到高兴。
答案 0 :(得分:0)
我怀疑你的IdentityUserRole
课程类似于:
class IdentityUserRole
{
...
public AppUser AppUser { get; set; }
public IdentityRole IdentityRole { get; set; }
}
实体框架自动生成AppUser_Id和IdentityRole_Id外部列,因为您没有为AppUser
和IdentityRole
属性指定外键。
如果您要使用UserId
和RoleId
列,则需要在IdentityUserRole
中为属性添加注释,例如
[ForeignKey("UserId")]
public AppUser AppUser { get; set; }
或在您的上下文中使用流畅的API定义关系。
您还应该为IdentityUserRole
类型定义主键(例如IdentityUserRoleId
)。
答案 1 :(得分:0)
我只需添加&#39; base.OnModelCreating(modelBuilder); &#39;在覆盖功能结束时&#39; OnModelCreating &#39;。