データソースがEntitySpacesコレクションに設定されたグリッドがあり、チェックボックス列があります。チェックボックスがオンの場合はレコードを作成し、オフの場合は同じレコードを削除します。
ユーザーがアイテムのチェックとチェック解除を繰り返した場合の明らかなPK違反の保存を回避するために、以前に削除されたエンティティを取得し、それらを削除されていないものとしてマークしようとしています。ただし、コレクションで and を使用するCombineDeletedEntities
とSeparateDeletedEntities
、コレクションに重複するエントリが作成されます。
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
3 回目にすると、EntitySpaces が何らかの形で追加のアイテムを作成しInvalidOperationException
、Sequence contains more than one matching element
.
以前にEntitySpacesでこれを打った人はいますか?単一のセッションで同じエンティティを複数回作成および削除するユーザーをどのようにうまく処理しましたか?