EF6 CodeFirst - 引入FOREIGN KEY约束可能会导致循环或多个级联路径

时间:2016-12-12 01:40:56

标签: .net entity-framework ef-code-first

我试图更新数据库并遇到此错误。我已经和它搏斗了一段时间,并且无法弄清楚发生了什么。

  

介绍FOREIGN KEY约束' FK_dbo.Comments_dbo.Users_UserId'在桌子上'评论'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。   无法创建约束或索引。查看以前的错误。

以下是我的用户类:

public class User
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public string Email { get; set; }
    [Required]
    public UserType ProfileType { get; set; }
    [Required]
    public string PasswordHash { get; set; }
    [Required]
    public int Location { get; set; }
    public int? SessionTokenId { get; set; }

    public SessionToken SessionToken { get; set; }
    public List<Comment> Comments { get; set; }
}

这是我的评论类:

public class Comment
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public int UserId { get; set; }
    [Required]
    public int ArticleId { get; set; }
    [Required]
    public string Message { get; set; }
    [Required]
    public DateTime PostDate { get; set; }

    public User User { get; set; }
    public Article Article { get; set; }
}

我试图添加一些:

modelBuilder.Entity<Comment>()
            .HasRequired(u => u.User)
            .WithMany()
            .WillCascadeOnDelete(false);

我认为这是错误的,我需要删除有关用户删除的所有用户评论。

但它没有结果。我写错了什么?

1 个答案:

答案 0 :(得分:0)

我认为您还有一个依赖项,例如它可能位于文章和用户之间,在这种情况下,您也必须应用此修复程序。