我有很多课程,但在PorductionLine
和Machine
我遇到了一些问题。 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; }
当我想从这个类生成数据库时我有这个错误:
引入FOREIGN KEY约束 'FK_dbo.TblMachine_dbo.TblProductionLine_FldProductionLineKey'上 table'TblMachine'可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN 关键约束。
无法创建约束或索引。查看以前的错误。 当我评论这3行时
[Column("FldProductionLineKey")]
public int MyProductionLineKey { get; set; }
[ForeignKey("MyProductionLineKey")]
错误消失但我想在其他一些类中使用此代码cus我有这个问题... 我该怎么办? 谢谢你的帮助!
答案 0 :(得分:1)
您收到此错误消息,因为在SQL Server中,表不能 在所有级联参照的列表中出现不止一次 由DELETE或UPDATE语句启动的操作。 例如,级联引用操作树必须只有 级联引用操作的特定表的一个路径 树。
您可以将cascadeDelete设置为false或true(在您的迁移Up()方法中)。取决于您的要求。
AddForeignKey(..., cascadeDelete: false);
了解更多信息,请查看this question