我有一个名为DeliveryRequest的表和另一个名为Operator的表,表DeliveryRequest如下所示:
public class DeliveryRequest
{
public int ID { get; set; }
public DateTime Date { get; set; }
public string UserID { get; set; }
public string Waybill { get; set; }
public string Reference { get; set; }
public int SupplierID { get; set; }
public Supplier Supplier { get; set; }
//[ForeignKey("Operator")]
public int SenderID { get; set; }
public Operator Sender { get; set; }
//[ForeignKey("Operator")]
public int ReceiverID { get; set; }
public Operator Receiver { get; set; }
public string Origin { get; set; }
public string Destination { get; set; }
public int ServiceID { get; set; }
public Service Service { get; set; }
}
表运算符如下:
public class Operator
{
public int ID { get; set; }
public string Company { get; set; }
public int ContactID { get; set; }
public Contact Contact { get; set; }
public int AddressID { get; set; }
public Address Address { get; set; }
}
所以问题是,当我试图更新我的数据库时,我得到一个FK约束错误,如下所示:
在表'DeliveryRequests‘上引入外键约束DeliveryRequests可能会导致循环或多个级联路径。指定“删除不操作”或“更新不操作”,或修改其他外键约束。无法创建约束或索引。请参阅先前的错误。
之前的错误是一样的。详情如下:
'FK_dbo.DeliveryRequests_dbo.Operators_SenderID‘(0x80131904):在表'DeliveryRequests’上引入外键约束DeliveryRequests可能会导致循环或多个级联路径。指定“删除不操作”或“更新不操作”,或修改其他外键约束。
专注于发件人和接受者部分,我不是专家,但错误必须存在。
//[ForeignKey("Operator")]
public int SenderID { get; set; }
public Operator Sender { get; set; }
//[ForeignKey("Operator")]
public int ReceiverID { get; set; }
public Operator Receiver { get; set; }
发布于 2019-03-13 06:59:34
看起来您正在使用Code First
方法。因此,请尝试关闭CascadeDelete for DeliveryRequests
modelBuilder.Entity<DeliveryRequests>()
.HasRequired(c => c.Operator )
.WithMany()
.WillCascadeOnDelete(false);
例如:
public class YourDBContext: DbContext
{
public YourDBContext(): base()
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<DeliveryRequests>()
.HasRequired(c => c.Operator )
.WithMany()
.WillCascadeOnDelete(false);
}
}
https://stackoverflow.com/questions/55135744
复制相似问题