使用EF6 Code First中的属性链接表

时间:2016-07-28 11:39:08

标签: c# entity-framework properties entity-framework-6 code-first

我目前的代码首先是EF6,我需要创建一个多对多的映射(很容易)但是生成的关系表需要包含它自己的属性。这是我所拥有的简化示例:

public class Journey : Entity
{
    public string Name { get; set; }
    public DateTime Start { get; set; }

    public virtual ICollection<Point> Points { get; set; }
}

public class Point : Entity
{
    public DbGeography GeoLocation { get; set; }
    public string Name  { get; set; }

    public virtual ICollection<Journey> Journeys { get; set; }
}

&#34;实体&#34; class基本上包含主键。

这当然会为&#34; Point&#34;创建一个带有外键的关系表。和&#34;旅程&#34;表主键。太棒了,但如果我想在该链接表中添加属性呢?例如名为DateTime的{​​{1}}属性,用于保存到达该时间点的时间。

你可以说我可以将该属性添加到&#34; Point&#34; class 但是我希望这个表能够保存我的应用程序中使用的所有物理点的列表,没有重复项(可以在多个旅程中使用单个点,每个点都有不同的到达日期)。因此,我需要将此属性保存在其他位置,链接表在这里是理想的。

我能想到的唯一解决方案是创建一个实际的关系类:

ArrivalDate

然后修改我的public class JourneyPoint : Entity { public int JourneyId { get; set; } public int PointId { get; set; } public DateTime ArrivalTime { get; set; } public virtual Journey Journey { get; set; } public virtual Point Point { get; set; } } Journey类,使其与Point类保持一对多的关系。然而,这只会增加复杂性并且不是特别语义:

JourneyPoint

这似乎没有多大意义,可能会让其他开发者感到困惑。是我要求的可能吗?

0 个答案:

没有答案