我有一個相對複雜的關係,我需要在用戶對象和許多查找表之間建立關係。用戶對象是你的軋機用戶模式運行:如何在實體框架中設置複雜的多對多關係4代碼優先
public class Youth : IAuditInfo
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public Guid YouthGuid { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
public string ImageName { get; set; }
[ForeignKey("FkYouthId")]
public ICollection<User> Parents { get; set; }
public CubPack Pack { get; set; }
public virtual ICollection<RequirementsLog> RequirementsLogs { get; set; }
public Youth()
{
Parents = new List<User>();
}
}
查找表是它得到複雜,我想不通的複雜性最小的路徑結合在一起。對於查找它是一系列開始與一個「主」表的表,該分層滾下要求和子的要求,這樣的:
站長:
public class BearTrail
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BearTrailRequiredBadge> BearTrailRequiredBadges { get; set; }
public virtual ICollection<BearTrailElectiveBadge> BearTrailElectivedBadges { get; set; }
}
必需徽章:
public class BearTrailRequiredBadge
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public int Number { get; set; }
public string Description { get; set; }
public virtual ICollection<BearTrailRequiredBadgeSubRequirement> BearTrailRequiredBadgeSubRequirements { get; set; }
}
必需的徽章子要求:
public class BearTrailRequiredBadgeSubRequirement
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Number { get; set; }
public string Text { get; set; }
public bool Required { get; set; }
}
這是一組查找s,這裏大概有四個嵌套類,還有一個表也是這樣。總查找表大約爲16個,可以給予或者考慮。
我最初想,如果用我的RequirementLog模型綁定它:
public class RequirementsLog
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<Youth> Youth { get; set; }
public BearTrail BearTrailRequirements { get; set; }
public TigerTrail TigerTrailRequirements { get; set; }
public WolfTrail WolfTrailRequirements { get; set; }
public WebelosTrail WebelosTrailRequirements { get; set; }
public WebelosArrowOfLight WebelosArrowOfLightRequirements { get; set; }
}
所以就有了許多人RequirementsLog和青年之間的許多。在RequirementsLog中創建的表有一個PK列(ID)和每個屬性的FK列。由此創建的多對多表(RequirementsLogYouths)有兩個PK(RequirementsLogId和YouthId)。
我對此有何看法?最終目標是將16桌左右的服務器列爲各種需求清單,並有另一個表格跟蹤特定年輕人在需求方面的進展情況。我很難看到這些DBA的東西,所以任何輸入將不勝感激。
這個問題,如果你可以詳細說明一下。我熟悉流利的api,並且在兩種實體類型之間給出一個m2m表格。因此,對於這個提議的解決方案,我是否會爲我擁有的4-6個「主」表或者所有16個表執行此操作?那麼,重複上面的每個綁定我需要的片段?這是怎麼讓我有一個方法來有一個列來標記項目已完成等? – ledgeJumper
正如您所描述的那樣,您只需要爲RequirementsLog和Youth提供這麼多對象,就像您自己說的那樣。你所有的徽章「樹」應該有一個父母的fk。 RequirementsLog將繼續引用特定的Youth的查找。現在我不明白爲什麼你需要一個RequirementsLog的許多年輕人? – dblk1965