使用值列表扩展用户配置文件

时间:2015-02-27 06:58:40

标签: c# entity-framework asp.net-mvc-4 ef-code-first asp.net-identity-2

我使用值列表(组模型类)扩展了我的身份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列,这是我不想要的。它需要删除该行。

如何解决此问题?

1 个答案:

答案 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");
                        });

}

请参阅https://msdn.microsoft.com/en-us/data/jj591620.aspx