1

我对此很陌生,我真的很想在这个问题上得到一些帮助:

首先我已经有一个数据库,比如说我在这个数据库中有 3 个表:User、UserMapping、UserRole。我生成了一个具有 3 类的模型,如下所示:

public  class user
{
        public int UserID { get; set; }
        public string UserName { get; set; }

        public virtual ICollection<UserMapping> UserMappings { get; set; }
}

   public class UserMapping
    {
        public int UserMappingID { get; set; }
        public int UserID { get; set; }
        public int UserRoleID { get; set; }

        public virtual User User { get; set; }
        public virtual UserRole UserRole { get; set; }

    }

  public class UserRole
    {
        public int UserRoleID { get; set; }
        public string RoleName { get; set; }

        public virtual ICollection<UserMapping> UserMappings { get; set; }

    }

我想创建一个新用户,并为新用户添加一个用户角色。用户和用户角色没有直接关系。我想创建一个视图来创建一个新用户,使用具有强类型的用户模型类。如何在此视图中为用户创建用户角色?

请帮忙...!非常感谢您提前。

4

1 回答 1

1

您不需要自己创建 UserMapping 实体。因为当您指定 User 和 UserRole 之间的多对多关系时,EF 会自动UserUserRole为您创建关系表关系表。

  public  class User
     {
        public int UserID { get; set; }
        public string UserName { get; set; }

        public virtual ICollection<UserRole> UserRoles{ get; set; }
     }


  public class UserRole
    {
        public int UserRoleID { get; set; }
        public string RoleName { get; set; }

        public virtual ICollection<User> Users { get; set; }

    }

然后你可以将关系表映射到现有的,

protected override void OnModelCreating(ModelBuilder modelBuilder)
{

modelBuilder.Entity<User>().HasMany(u => u.UserRoles)
            .WithMany(r => r.Users )
            .Map(m =>
            {
                m.MapLeftKey("UserID");
                m.MapRightKey("UserRoleID");
                m.ToTable("YourExistinegTableName");
            });

}
于 2012-04-22T03:26:25.590 回答