我有以下实体Framwork对象:
评价阶段,公寓
评估包含很多阶段和第二阶段包含了许多公寓。实体框架 - 删除复杂对象
我想删除某一个阶段如下:
var deletedStages =
originalEvaluation.Stages.Where(s => s.State == StateTypes.Deleted);
deletedStages.ToList().ForEach(stage =>
{
stage.Apartments.ToList().ForEach(
apartment => stage.Apartments.Remove(apartment)
);
originalEvaluation.Stages.Remove(stage);
});
deletedStages.ToList().ForEach(stage =>
{
stage.Apartments.ToList().ForEach(apartment =>
shechtmanEntities.Apartments.DeleteObject(apartment)
);
shechtmanEntities.Stages.DeleteObject(stage);
});
}
}
try
{
shechtmanEntities.SaveChanges();
}
但我不断收到异常:“的关系无法改变,因为一个或多个外键的属性是不可空的“。
我知道它必须与一个空的外键,但我不明白哪个?为什么?
谢谢。
我试图从评估中删除阶段。 仅供参考 - 我试过只是删除舞台(不删除和删除所有的公寓),它不起作用(我得到同样的例外)。 – KayzerSoze
然后,您应该先删除公寓并提交更改,然后删除阶段并提交更改。我还会用TransactionScope来包围这段代码,以确保如果出现错误,您不会完成一半的工作。 – dutzu