【发布时间】:2018-03-23 14:37:15
【问题描述】:
我首先使用 EF 代码。
我需要两个表,LedgerCategories 和 LedgerSubCategories 具有一对多关系(类别 -> 子类别),每个表中的键都是代码(字符串) - 即分别为 LedgerCategoryCode 和 LedgerSubCategoryCode .但是,我需要允许不同类别的 SubCategoryCode 值相同。
例如CategoryCode = REHAB,SubCategoryCodes = MATL、CONTR 和 FEES;和 CategoryCode = MAINT、SubCategoryCodes = MATL、CONTR 和 FEES。
我想我需要使用复合键并在 LedgerSubCategories 表中包含 CategoryCode 和 SubCategoryCode 字段。目前我有:
public class LedgerCategory
{
[Key]
public string LedgerCategoryCode { get; set; }
public string Description { get; set; }
public List<LedgerSubCategory> LedgerSubCategories { get; set; }
}
public class LedgerSubCategory
{
[Key, Column(Order = 0)]
public string LedgerCategoryCode { get; set; }
[Key, Column(Order = 1)]
public string LedgerSubCategoryCode { get; set; }
public string Description { get; set; }
}
我只使用LedgerCategory 类的实例为这些表播种,每个实例都包含一个适当实例化的LedgerSubCategory 类的列表。这似乎既正确地设置了数据库架构(在我看来),又正确地填充了两个表。
但是,当我重新实例化LedgerCategory 的简单列表时,即
using (var db = new BusinessLedgerDBContext())
{
var LedgerCategories = db.LedgerCategories.ToList();
}
LedgerCategory 实例不包含它们各自的关联LedgerSubCategory 实例列表。
我试图避免在 LedgerSubCategories 中引入唯一编号或 Guid ID 字段作为 PK 并仅索引其他代码字段,这看起来像是一个杂项。我没有尝试过,但我不确定它是否会导致重新实例化 LedgerCategories 并获得关联 LedgerSubCategories 的任何不同结果。
感谢任何有关如何正确执行此操作并获得正确结果的建议。
【问题讨论】:
标签: sql-server entity-framework ef-code-first