我有一个将数据源设置为EntitySpaces集合的网格,并带有一个复选框列。当复选框被选中时,我想创建一条记录,当它被清除时,我想删除相同的记录。
如果用户反复检查和取消选中某个项目,为了避免明显的PK违规保存,我试图检索以前删除的实体并将它们标记为未删除。但是,当我在集合上使用CombineDeletedEntities
andSeparateDeletedEntities
时,它会在集合中创建重复的条目。
roleFunctions.CombineDeletedEntities();
// On third cycle through, this is the error line
RoleFunction foundItem = roleFunctions.FindByPrimaryKey(roleName, functionName);
if (foundItem != null)
{
foundItem.RowState = esDataRowState.Unchanged;
// Extraneous logic...
}
else
{
// Create new item...
}
roleFunctions.SeparateDeletedEntities();
所以基本上当我FindByPrimaryKey
第三次做的时候,EntitySpaces 以某种方式创建了一个额外的项目,导致一个InvalidOperationException
带有Sequence contains more than one matching element
.
之前有没有人用 EntitySpaces 解决过这个问题,你是如何在一个会话中很好地处理用户多次创建和删除同一个实体的?