1

私はこれに非常に慣れていないので、この問題について助けを求めています。

まず、私はすでにデータベースを持っています。たとえば、このデータベースにはUser、UserMapping、UserRoleの3つのテーブルがあります。次のように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; }

    }

新しいユーザーを作成し、新しいユーザーのユーザーロールを追加したいと思います。ユーザーとユーザーロールには直接の関係はありません。強く型付けされたUserモデルクラスを使用して、新しいユーザーを作成するためのビューを作成したいと思います。このビューでユーザーのユーザーロールを作成するにはどうすればよいですか?

助けてください...!事前にどうもありがとうございました。

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 に答える