当前位置: 首页 > 知识库问答 >
问题:

错误:引入外键约束可能会导致循环或多个级联路径-为什么?

长孙章横
2023-03-14

我有很多课程,但在生产线上和机器上我有一些问题。ProductionLine类为:

[Column("FldKeyId")]
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   [Required]
   [Key]
   public int MyKeyId { get; set; }
   [Column("FldCode")]
    [Required]
   [Index(IsUnique = true)]
   public int MyCode
   {
       get { return _Code; }
       set { _Code = value; }
   }
   [Column("FldName")]
    [Required]
   public string MyName
   {
       get { return _Name; }
       set { _Name = value; }
   }
   [Column("FldLocation")]
    [Required]
   public string MyLocation
   {
       get { return _Location; }
       set { _Location = value; }
   }

   [Column("FldCompanyKey")]
   public int MyCompanyKey { get; set; }
   [ForeignKey("MyCompanyKey")]
    [Required]
   public virtual Company Company { get; set; }

机器类是:

[Column("FldKeyId")]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Required]
    [Key]
    public int MyKeyId { get; set; }
    [Column("FldCode")]
    [Required]
    [Index(IsUnique = true)]
    public int MyMachineCode
    {
        get { return _MachineCode; }
        set { _MachineCode = value; }
    }
    [Column("FldName")]
    [Required]
    public string MyName
    {
        get { return _Name; }
        set { _Name = value; }
    }

    [Column("FldProductionLineKey")]

    public int MyProductionLineKey { get; set; }
    [ForeignKey("MyProductionLineKey")]
    //[Required]
    public ProductionLine ProductionLine { get; set; }

当我想从这个类生成数据库时,我有这个错误:

引入外键约束“FK\u dbo”。TblMachine\u dbo。表“TblMachine”上的TblProductionLine\U FldProductionLineKey“可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。

无法创建约束或索引。请参阅以前的错误。当我评论这3行时

[Column("FldProductionLineKey")]
public int MyProductionLineKey { get; set; }
[ForeignKey("MyProductionLineKey")]

错误消失了,但我想要这个代码,因为在其他一些类中我有这个问题...我必须做什么?谢谢帮助!!

共有1个答案

梅跃
2023-03-14

您收到此错误消息的原因是,在SQL Server中,一个表不能多次出现在由DELETE或UPDATE语句启动的所有级联引用操作的列表中。例如,级联引用操作树必须只有一条指向级联引用操作树上特定表的路径。

可以将cascadeDelete设置为false或true(在migration Up()方法中)。取决于您的要求。

AddForeignKey(..., cascadeDelete: false);

有关更多信息,请检查此问题

 类似资料:
  • 我收到了这个错误 在表“区域”上引入FOREIGN KEY约束“FK_dbo.Regions_dbo.Countries_CountryId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。无法创建约束。请参阅以前的错误。 我想知道这是否意味着我的数据库设计不好?我听说你关掉了级联之类的东西,但

  • 我已经和这件事纠缠了一段时间,不太清楚到底发生了什么。我有一个卡实体,它包含两个边(通常是2个),并且卡和边都有一个舞台。我正在使用EF Codefirst迁移,迁移失败,出现以下错误: 在表“Sides”上引入外键约束“FK_dbo.Sides_dbo.Cards_cardd”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 这是我的卡实体:

  • 给大师们的一个快速问题。 我有2个EF模型课程: 基本上,我想先在代码中创建一对多关系。 但当我尝试这样做时,我会出现以下错误: 引入外键约束“FK\u dbo”。Teachers\u dbo。表“教师”上的“Schools\u SchoolId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。 我哪里做错了?

  • 问题内容: 尝试向表中添加约束时出现问题。我得到了错误: 在表“ Employee”上引入FOREIGN KEY约束“ FK74988DB24B3C886”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 我的约束是在一个表和一个表之间。该表包括,,,和。的具有多个字段的标号,从而可以存在对于每

  • 我正在尝试更新数据库,但出现此错误。这件事我已经纠结了一段时间,不太清楚到底发生了什么。 引入外键约束“FK\u dbo”。注释\u dbo。表“Comments”上的Users\u UserId可能导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。无法创建约束或索引。请参阅以前的错误。 这是我的用户类: 下面是我的评论

  • 我已经发现了许多其他类似的问题,但我不知道为什么它会在我的实体上这样做。用简单的英语表示如下。三个实体:账户、现场和合同。一个帐户可以有多个站点。一个帐户可以有多个合同。一个站点可以有多个合同。因此,在某些情况下,您可以将合同附加到站点,然后将其附加到帐户,或者将合同直接附加到帐户。 我假设我得到了这一点,因为删除合同有两种可能的级联,一种是在删除帐户时级联,另一种是直接附加到帐户,另一种是在删除