我有一个相对复杂的关系,我需要在用户对象和许多查找表之间建立关系。用户对象是你的轧机用户模式运行:如何在实体框架中设置复杂的多对多关系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