我想首先使用EF代码对以下内容进行建模。 想象一场汽车比赛,多个赛车类在自己的比赛中竞争。
SubEvent
仅适用于一个CarClass
,因此每个SubEvent
都是唯一的Id
,EventId
和CarClassId
。
现在我的问题出现了:
我会说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; }