我使用值列表(组模型类)扩展了我的身份ApplicationUser配置文件(类):
public class ApplicationUser : IdentityUser
{
public virtual ICollection<Group> group { get; set; }
...
}
由于我的Group类是在解决方案中的另一个项目中定义的,所以我无法在该类的Web项目中添加对ApplicationUser的引用(循环参照完整性问题)。因此,当我运行update-database ef代码时,第一次迁移创建了连接表Groups以连接ApplicationUser和Group,它们有两列,一个来自Group类的键和一个ApplicationUser的id键。
我在这里遇到了一些问题。首先,生成的Groups表只有Group id作为它的主键,而不是它们应该是两个id。其次,当我尝试从我的应用程序中删除用户组或删除用户时,请尝试在连接组表中更新(设置null)ApplicationUser的id列,这是我不想要的。它需要删除该行。
如何解决此问题?
答案 0 :(得分:0)
您可以尝试一种流畅的配置,告诉EF如何处理这种关系,例如:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ApplicationUser>()
.HasMany<Group>(g => g.Groups)
.WithMany(u => u.ApplicationUsers)
.Map(ug =>
{
ug.MapLeftKey("UserId");
ug.MapRightKey("GroupId");
ug.ToTable("UserGroup");
});
}