[英]EF Core delete on table violates foreign key constraint on table
我有兩個表( Device
和PropertyValue
),當我嘗試刪除一個Device
我收到一條異常消息:
違反外鍵
我還嘗試在OnModelCreating()
上設置級聯,但仍然無效。
public class Device
{
public int Id { get; set; }
public List<PropertyValue> Properties { get; set; }
}
public class PropertyValue
{
public int Id { get; set; }
public int? DeviceId { get; set; }
public Device Device { get; set; }
}
modelBuilder.Entity<PropertyValue>()
.HasOne(p => p.Device)
.WithMany(b => b.Properties)
.HasForeignKey(w => w.DeviceId)
.OnDelete(DeleteBehavior.Cascade);
編輯:我正在使用存儲庫,但_context.Devices.Remove(entity);
我正在使用_context.Devices.Remove(entity);
刪除_context.Devices.Remove(entity);
如果上下文未加載和跟蹤Properties集合中的相關實體,則不會刪除它們。 建議的方法是對數據庫中的外鍵約束設置級聯操作,如DeleteBehavior的文檔中所述:
https://docs.microsoft.com/en-us/ef/core/api/microsoft.entityframeworkcore.metadata.deletebehavior
如果使用EF自動創建架構,那么這也將生成。
這條線
public int? DeviceId { get; set; }
定義屬性名稱DeviceId
,此屬性允許為null。 試着刪除?
從中刪除部分.HasForeignKey(w => w.DeviceId)
。 它應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.