[英]How to create a model with self reference in Entity Framework Code-First?
我正在使用 Entity Framework Core 3.1 並嘗試處理簡單的場景:在體育聯盟中有很多比賽,但我想處理推遲的比賽。 這是我的模型:
public class Game
{
public int GameId { get; set; }
public DateTime StartTime { get; set; }
public int HomeTeamId { get; set; }
public int AwayTeamId { get; set; }
public int? PostponedGameId { get; set; } // Original game that didn't happened and was postponed to 'this' game.
public Team HomeTeam { get; set; }
public Team AwayTeam { get; set; }
public Game PostponedGame { get; set; }
}
顯然對於大多數游戲PostponedGameId
將為空。
如何創建一個fluent API
來生成可為空的 FK (PostponedGameId)?
編輯:
這是我到目前為止:
modelBuilder.Entity<Game>()
.HasOne<Game>(g => g.PostponedGame)
.WithOne()
.OnDelete(DeleteBehavior.Cascade);
但我不知道如何聲明PostponedGameId
是外鍵。 我什至不確定這是否正確,因為我沒有指定外鍵就運行它。
所以我建議如下:
modelBuilder.Entity<Game>()
.HasOne<Game>(g => g.PostponedGame)
.WithOne()
.HasForeignKey<Game>(g => g.PostponedGameId) // Defines the FK
.OnDelete(DeleteBehavior.Cascade)
.IsRequired(false); // Tells ef-core that the FK is optional
我目前無法驗證代碼,但它應該可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.