子实体的主要关键

时间:2013-05-19 20:57:57

标签: ef-code-first primary-key

我想首先使用EF代码对以下内容进行建模。 想象一场汽车比赛,多个赛车类在自己的比赛中竞争。

SubEvent仅适用于一个CarClass,因此每个SubEvent都是唯一的IdEventIdCarClassId

现在我的问题出现了: 我会说Competitor中的SubEvent是唯一的,因此Competitor的PrimaryKey必须是{ CompetitorId, SubEventId, EventId, CarClassId }(才是唯一的)

所以在上下文的OnModelCreating()函数中,我必须得到以下内容:

modelBuilder.Entity<Competitor>().Key(c => new { c.Id, c.SubEventId, c.SubEvent.EventId, c.SubEvent.CClassId});

这是对的还是我在这里过于复杂?


参考,到目前为止,这是我的代码模型。

class Event
{
    int Id;
    virtual ICollection<SubEvent> SubEvents;
}
class SubEvent
{
    int Id;
    int EventId;
    int CClassId;

    virtual Event Event;
    virtual CClass CClass;
    virtual ICollection<Competitor> Competitors;
    virtual ICollection<Race> Races; // not shown for shortness reasons.
}
class Competitor
{
    int Id;
    int SubEventId;

    virtual SubEvent SubEvent;
    // snip
}
class CClass { int Id; }

0 个答案:

没有答案