我通过删除它包含的所有实体并从上下文中删除每个实体来清空实体集合,然后我重新填充可能是具有与刚刚删除的主键相同的主键的实体。
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);
}
}
}
}
然后我通过添加新实体重新填充集合,但是当我保存时,我得到一个约束违规,因为在插入新实体之前没有删除实体。 在添加新实体之前,是否需要将更改保存到上下文中?
答案 0 :(得分:0)
在添加新实体之前,是否需要将更改保存到上下文中?
答案是肯定的!当您保存更改时,您正在对数据库进行提交,并在其之后执行您的更改。