表上的 EF Core 删除违反了表上的外键约束

Din*_*ino 5 c# entity-framework-core

我有两个表(DevicePropertyValue),当我尝试删除 a 时,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);  
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用存储库,但基本上我正在使用删除_context.Devices.Remove(entity);

Iva*_*oev 5

由于 FK 属性DeviceId可为空,因此该关系是可选的默认情况下删除级联已关闭。

因此,添加.OnDelete(DeleteBehavior.Cascade)是朝着正确方向迈出的一步。

但是,如果您最初没有这样做并且已经创建了表和关系,则必须确保它也应用在数据库中(因为对于级联删除 EF 通常依赖于数据库来实现),通过生成新的迁移和更新数据库。