簡體   English   中英

EF FOREIGN KEY約束可能會導致循環或多個級聯路徑

[英]EF FOREIGN KEY constraint may cause cycles or multiple cascade paths

我正在開發一個示例應用程序,人們可以在體育賽事上下注並賺取積分。 它具有以下Entity Framework Code-First模型:

public class Person
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}

public class Race
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}

public class RaceBet
{
    [Key]
    public int Id { get; set; }

    [Required]
    public int RaceId { get; set; }

    [Required]
    public int PersonId { get; set; }

    [Required]
    public int CompetitorId { get; set; }

    public virtual Race Race { get; set; }
    public virtual Person Person { get; set; }
    public virtual Person Competitor { get; set; }
}

一個人可以為一場比賽下注,也可以對任何其他人(競爭對手)下注。

這些模型將產生以下錯誤:

Introducing FOREIGN KEY constraint 'FK_dbo.RaceBets_dbo.People_PersonId' on table 'RaceBets' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.

我嘗試刪除OneToManyCascadeDeleteConvention ,添加流暢的配置以防止對RaceBet和所有其他版本的api進行級聯刪除,但是一切都會失敗。

modelBuilder
.Entity<RaceBet>()
.HasRequired(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PersonId)
.WillCascadeOnDelete(false);

我該如何解決? 我的模型背后的概念是否錯誤?

謝謝!

感謝Oleg的評論:

我無法使用此代碼重現異常:保護重寫void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Conventions.Add(new System.Data.Entity.ModelConfiguration.Conventions.OneToManyCascadeDeleteConventi‌on()); modelBuilder .Entity().HasRequired(x => x.Person).WithMany().HasForeignKey(x => x.PersonId).WillCascadeOnDelete(false); }

這修復了模型創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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