[英]Entity framework conventions
我剛剛開始使用Entity框架,並創建了我的存儲庫和上下文類以及接口,並定義了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 燈具之間包含的內容。 游戲周中的每一場比賽都有一個結果 。
我是否使用類和以下內容進行了正確的建模:
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);
}
任何提示將非常感謝。
顯然您想在Fixture
和Result
之間建立一對一的關系( Result
實體不能在多個Fixture
之間共享),對嗎? 在這種情況下,您的映射不是100%正確的。 你需要:
modelBuilder.Entity<Fixture>()
.HasOptional(f => f.Result)
.WithRequired();
如果不添加WithRequired
EF約定將假設WithMany
,即一對多而不是一對一的關系。
說到約定,您實際上可以刪除modelBuilder.Entity<Gameweek>().HasMany(g => g.Fixtures);
, Gameweek
所有 [Required]
屬性和[Key]
屬性。 僅需要上面的一對一映射和Result.FixtureID
上的[Key]
屬性。 其他所有內容將根據約定自動映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.