0
我一直在掙扎着這幾天。鏈接三個模型與所有模型之間的多對多鏈接
我有三種模式可以將許多關係鏈接在一起。
規則:
- 一個要求可以有許多控制,反之亦然
- 過程可以有許多控制,反之亦然
我目前顯示鏈接到要求所有控件我需求意見沒有問題,我甚至通過創建視圖模型來創建/更新工作,該視圖模型保存分配的數據
我想顯示鏈接到所查看的要求的控件鏈接的所有過程的列表。我不想在該級別編輯它們,因爲這將通過控制器控制器完成。這是通過兩個連接的是我無法弄清楚:(
模型表的鏈接:
public class Requirement
{
[Key]
public int RequirementId { get; set }
public string Name { get; set; }
public string Details { get; set; }
public virtual ICollection<Control> Controls { get; set; }
}
public class Control
{
public int ControlId { get; set; }
public string Name { get; set; }
public virtual ICollection<Requirement> Requirements { get; set; }
public virtual ICollection<Procedure> Procedures { get; set; }
}
public class Procedure
{
[Key]
public int ProcedureId { get; set; }
public string Name { get; set; }
public string Details { get; set; }
public virtual ICollection<Control> Controls { get; set; }
}
的DbContext:
public class CompliancePortalContext : DbContext
{
public CompliancePortalContext()
: base("CompliancePortalContext")
{ }
public DbSet<Control> Controls { get; set; }
public DbSet<Procedure> Procedures { get; set; }
public DbSet<Requirement> Requirements { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Procedure>().HasMany(c => c.Controls).WithMany(p => p.Procedures).Map(
mc =>
{
mc.MapLeftKey("ProcedureId");
mc.MapRightKey("ControlId");
mc.ToTable("ProcedureControl");
});
modelBuilder.Entity<Requirement>().HasMany(c => c.Controls).WithMany(r => r.Requirements).Map(
mc =>
{
mc.MapLeftKey("RequirementId");
mc.MapRightKey("ControlId");
mc.ToTable("RequirementControl");
});
base.OnModelCreating(modelBuilder);
}
}
我不敢相信這是很容易的。我有很多要學習!謝謝Fredrik :) – MrAquatic