执行删除后,已删除实体中的NullReferenceException

时间:2018-04-17 14:45:17

标签: entity-framework-core

在其他功能更新函数中,如果我尝试删除表示两个BusAppl实体之间可选关系的实体

_context.BusApplDpndncy.Remove(toRemove);

当我调用SaveChanges时,调用BusApplDpndncy中的这个setter,并传递一个空值,导致NullReferenceException。

public BusAppl BusAppl
{
    set
    {
        this._BusApplName = value.BusApplNm;
        this._BusAppl = value;
    }
    get
    {
        return this._BusAppl;
    }
}

我不确定为什么会这样。我想完整地删除BusApplDpndncy,所以对我来说这似乎很奇怪,它首先要在该对象中设置属性。就数据库模式而言,需要BusAppl属性。我不确定为什么框架会尝试将其设置为null。

从上下文

modelBuilder.Entity<BusApplDpndncy>(entity =>
    {
        entity.HasKey(e => new { e.BusApplId, e.DepBusApplId });

        entity.ToTable("BUS_APPL_DPNDNCY");

        entity.Property(e => e.BusApplId).HasColumnName("BUS_APPL_ID");

        entity.Property(e => e.DepBusApplId).HasColumnName("DEP_BUS_APPL_ID");

        entity.HasOne(d => d.BusAppl)
            .WithMany(p => p.BusApplDpndncyBusAppl)
            .HasForeignKey(d => d.BusApplId)
            .OnDelete(DeleteBehavior.ClientSetNull)
            .HasConstraintName("FK_BUS_APPL_DPNDNCY_NEW_BUS_APPL");

        entity.HasOne(d => d.DepBusAppl)
            .WithMany(p => p.BusApplDpndncyDepBusAppl)
            .HasForeignKey(d => d.DepBusApplId)
            .OnDelete(DeleteBehavior.ClientSetNull)
            .HasConstraintName("FK_BUS_APPL_DPNDNCY_NEW_BUS_APPL1");
    });

1 个答案:

答案 0 :(得分:0)

我不确定我做错了什么,但我重写了代码,意识到我必须始终在上下文中查找entites而不是使用从web api输入中获取的内容。

我这样做后问题就消失了。仍然不知道为什么给定模型它会在那里传递空值。