我希望在我的一些实体之间执行看似困难的 EF Code First 关系。我在 Stack Overflow 和网络上都进行了搜索,但似乎找不到任何东西。我有一个下面概述的简单课程。程序的 PK 是它的 Id。它还具有(非 PK)FamilyId 值。没有“家庭”表或类似的东西。此外,“FamilyId”不是不同程序实体的 Id 值的 FK。在我看来,我认为它是一种“分组”。
public class Program
{
public int Id { get; set; }
public virtual List<Program> RelatedPrograms { get; set; }
public int? FamilyId { get; set; }
}
让我用一些示例数据进一步解释。
ID:1,FamilyId:17
Id:2,FamilyId:17
Id:3,FamilyId:18
Id:4,FamilyId:17
在我的配置中使用 EF Code First 我想添加逻辑,如果我对这三个中的任何一个进行查询(例如,这里的重点是它们都是通过此任意属性相互关联)。如果我查询 Program 3,RelatedPrograms 属性中只有 1 条记录,它将是 Program 3,因为没有其他东西共享相同的 FamilyId。
我认为我的逻辑需要类似于以下内容,只是以下内容会自动引用幕后的 Id 列;我需要我的链接完全基于正在访问的程序的 FamilyId 列和数据库中其他程序的 FamilyId 值。
this.HasMany(p => p.RelatedPrograms).WithRequired().HasForeignKey(p => p.FamilyId);
您可以为此提供的任何帮助将不胜感激。
谢谢!