【发布时间】:2013-12-05 09:48:49
【问题描述】:
希望这是相对简单的,但我似乎无法全神贯注。
我有一个这样的 POCO:
public class TigerTrailRequiredBadge
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<TigerTrailRequiredBadgeSubRequirement> TigerTrailRequiredBadgeSubRequirements { get; set; }
}
还有一个非常相似的:
public class TigerTrailElectiveBadge
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int Number { get; set; }
public string Name { get; set; }
public string Requirement { get; set; }
}
这两个 poco 是只有一堆查找数据的表。它们是徽章要求的列表。我现在需要的是一张表格来跟踪一个人完成徽章的进度。所以我有一个根用户对象,它有一个像这样的对象属性:
public class Youth
{
...
public virtual YouthCubRequirementsTracker YouthCubRequirementsTracker { get; set; }
...
}
那个 poco 是这样的:
public class YouthCubRequirementsTracker
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public bool TigerTrailDone { get; set; }
public virtual TigerTrailChecklist TigerTrailChecklist { get; set; }
...more 'Trail' Checklists ...
}
这让我想到了我无法弄清楚的 poco:TigerTrailChecklist:
public class TigerTrailChecklist
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public List<TigerTrailRequiredBadge> RequiredBadges { get; set; }
public List<TigerTrailElectiveBadge> ElectiveBadges { get; set; }
}
我希望 Tiger Trail 清单显示这种数据(伪 sql 结果)
Id FK_ReqBadgeId FK_ElectiveBadgeID Complete CompleteDate
1 42 null true 11-12-13
2 null 13 true 11-12-14
所以,有几个问题:
- 对于我想要完成的工作来说,这是一个好方法吗?
- 如何先通过代码完成我要查找的结果?
- 当我沿着这条路走时,我会发现任何陷阱吗?这只是 YouthRequirementTracker 类的一部分,总共有四个“轨迹”,因此有 4 个查找表要连接到用户(之间有一两个表跳)
【问题讨论】:
-
我觉得不错?我看到的唯一潜在问题是您必须访问该表才能获取数据。您需要多快的数据?如果它是一个像在线游戏这样的实时应用程序,您可能希望在需要之前将给定用户的数据加载到某个局部变量中。
标签: c# sql entity-framework ef-code-first