簡體   English   中英

如何在實體框架代碼優先中創建具有自引用的模型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM