2017-03-17 25 views
0

EFで多対多の関係をモデル化する必要があります。私が通常遭遇する答えは、両方のエンティティが互いを参照する必要があります。モデルEntity Frameworkの多対多

私の場合です。

複数の権限(「権限」エンティティ)を持つロールエンティティがありますが、ロールにはpermissionsというリストがありますが、一方の権限は複数のロールに属することができますが、ロールの参照プロパティはありません。

私はそれをモデル化するにはどうすればよい。また

、することができます私は役割を持つ新しい権限をカスケード

+0

モデルの作成方法は?コードファースト、モデルファースト...? – vesan

+0

私はコードファーストを使用しています。 – Jajan

+0

権限クラスに「ロール」プロパティを持たないと実行できないかどうかはわかりません。プロパティーはいつでも追加でき、単に使用しないでください。このチュートリアルをチェックしてください:http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx – vesan

答えて

1

コード・ファーストを使用して、あなたがこのモデリングで行くことができます??

public class Role 
{ 
    public Role() 
    { 
     this.Premission = new HashSet<Premission>(); 
    } 

    public int RoleId { get; set; } 
    public string RoleName { get; set; } 

    public virtual ICollection<Premission> Premissions { get; set; } 
} 

public class Premission 
{ 
    public Premission() 
    { 
     this.Role = new HashSet<Role>(); 
    } 

    public int PremissionId { get; set; } 
    public string PremissionName { get; set; } 

    public virtual ICollection<Role> Roles{ get; set; } 
} 

Fluent Apiを使用すると、次のようにマッピングできます。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 

    modelBuilder.Entity<Role>() 
       .HasMany<Premission>(s => s.Premissions) 
       .WithMany(c => c.Roles) 
       .Map(cs => 
         { 
          cs.MapLeftKey("RoleRefId"); 
          cs.MapRightKey("PremissionRefId"); 
          cs.ToTable("Role_Premission"); 
         }); 

} 
関連する問題