2
我想安裝使用實體框架的核心一個新的數據庫,但調用命令「更新數據庫內」的說法時,我得到一個錯誤:多級聯路徑錯誤 - 實體框架核心
"Introducing FOREIGN KEY constraint 'FK_Answers_Users_UserId' on table 'Answers' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints."
我不計劃實際上從數據庫中刪除任何東西,但如果刪除了用戶,則將其設置爲刪除與用戶相關的所有內容。
這裏是我的模型:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public string ImageUrl { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public int AnswersFlagged { get; set; }
public bool Status { get; set; }
public IEnumerable<Dispute> Disputes { get; set; }
public IEnumerable<Answer> Answers { get; set; }
}
public class Dispute
{
public int Id { get; set; }
public int UserId { get; set; }
public int CategoryId { get; set; }
public string Text { get; set; }
public string OptionOneText { get; set; }
public string OptionTwoText { get; set; }
public string OptionThreeText { get; set; }
public string OptionOneImageUrl { get; set; }
public string OptionTwoImageUrl { get; set; }
public string OptionThreeImageUrl { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public bool Status { get; set; }
public User User { get; set; }
public Category Category { get; set; }
public IEnumerable<Answer> Answers { get; set; }
}
public class Answer
{
public int Id { get; set; }
public int DisputeId { get; set; }
public int UserId { get; set; }
public int SelectedOption { get; set; }
public string Comment { get; set; }
public bool Flagged { get; set; }
public DateTime DateCreated { get; set; }
public Dispute Dispute { get; set; }
public User User { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime DateCreated { get; set; }
public bool Status { get; set; }
public IEnumerable<Dispute> Disputes { get; set; }
}
public class DisputeCategory
{
public int Id { get; set; }
public int DisputeId { get; set; }
public int CategoryId { get; set; }
public Dispute Dispute { get; set; }
public Category Category { get; set; }
}
我試圖與我的DbContext沒有運氣的遵循:
1)
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Answer>()
.HasOne(p => p.User)
.WithMany(b => b.Answers)
.OnDelete(DeleteBehavior.Restrict);
}
2)
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Answer>()
.HasOne(p => p.User)
.WithMany(b => b.Answers)
.IsRequired(false);
}
3)
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
}
我需要怎麼做才能正確設置此設置?
感謝您的幫助! – Aaron
不客氣;) – octavioccl