【问题标题】:EF6 CodeFirst - Introducing FOREIGN KEY constraint may cause cycles or multiple cascade pathsEF6 CodeFirst - 引入 FOREIGN KEY 约束可能会导致循环或多个级联路径
【发布时间】:2017-04-26 20:41:50
【问题描述】:

我正在尝试更新数据库并收到此错误。我已经为此苦苦挣扎了一段时间,无法完全弄清楚发生了什么。

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

这是我的 User 类:

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);

我认为是错误的,我需要在删除用户时删除所有用户cmet。

但它没有给出任何结果。我写错了什么?

【问题讨论】:

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


    【解决方案1】:

    我想你还有一个依赖,例如它可能在文章和用户之间,在这种情况下你也必须应用你的修复。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2013-10-22
      • 2018-08-08
      • 2019-10-20
      • 2018-12-14
      • 2013-06-12
      相关资源
      最近更新 更多