我刚刚开始使用Entity框架,并创建了我的Repository和上下文类和接口,并定义了我的POCO,现在我正试图了解这些约定是如何工作的,但是遇到困难并且迄今为止无法这样做。实体框架约定
我有以下2 POCO类:
游戏周期
public class Gameweek
{
[Key][Required]
public int GameweekID { get; set; }
[Required]
public DateTime StartDate { get; set; }
[Required]
public DateTime Deadline { get; set; }
[Required]
public int NumberFixtures { get; set; }
public virtual ICollection<Fixture> Fixtures { get; set; }
public virtual ICollection<Result> Results { get; set; }
}
夹具
public class Fixture
{
[Key][Required]
public int FixtureID { get; set; }
[Required]
public int GameweekID { get; set; }
[Required]
public string HomeTeam { get; set; }
[Required]
public string AwayTeam { get; set; }
public virtual Result Result { get; set; }
}
结果
public class Result
{
[Key][Required]
public int FixtureID { get; set; }
[Required]
public int HomeGoals { get; set; }
[Required]
public int AwayGoals { get; set; }
}
在我的模型游戏周期可以0-20 灯具之间包含的内容。比赛周中的每个灯具都有一个结果。
我是用类和以下convetions正确模拟这种:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove < PluralizingTableNameConvention>();
//Table relationships defined here
modelBuilder.Entity<Gameweek>()
.HasMany(g => g.Fixtures);
modelBuilder.Entity<Fixture>()
.HasOptional(f => f.Result);
}
任何提示将不胜感激。
嗨Slauma,谢谢你的回复。 Gameweek实体是否没有需要的约定?那么这些装置如何与他们相应的比赛周相关联? – Jay
@Jay:EF看到了'Gameweek.Fixtures'集合。由此推断按惯例一对多的关系。然后它看到'Fixture.GameweekID'属性并假定这是关系的FK属性(我相信通过命名约定)。因为它是一个不可为空的'int',所以它会推断出该关系是*必需*而不是可选的。 – Slauma
不错,在Slauma谢谢你的解释我已经完成了所有我认为感谢的帮助:) – Jay