在其他功能更新函数中,如果我尝试删除表示两个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");
});
答案 0 :(得分:0)
我不确定我做错了什么,但我重写了代码,意识到我必须始终在上下文中查找entites而不是使用从web api输入中获取的内容。
我这样做后问题就消失了。仍然不知道为什么给定模型它会在那里传递空值。