我通过删除它包含的所有实体并从上下文中删除每个实体来清空实体集合,然后我正在重新填充可能具有与刚刚删除的实体相同的主键的实体。
protected void RemoveAllElements<T>(System.Data.Objects.DataClasses.EntityCollection<T> col, Func<T, bool> deleteIfTrue) where T : System.Data.Objects.DataClasses.EntityObject
{
if (col != null && col.Count > 0)
{
for (int i = col.Count - 1; i >= 0; i--)
{
var elt = col.ElementAt(i);
if (deleteIfTrue(elt))
{
col.Remove(elt);
DBContextManager.CurrentContext.DeleteObject(elt);
}
}
}
}
然后我通过添加新实体来重新填充集合,但是当我保存时,我遇到了约束违规,因为在插入新实体之前没有删除实体。在添加新实体之前,是否需要保存对上下文的更改?