신청서에 IDictionary<TKey, IList<TValue>>
이 있습니다.거래 사전
내가 밖으로 가지고 싶어 : N TKEY = 5의 값과 TKEY = 3 m의 값을 사용자와 같은 요청이. 모든 지정된 요소가있는 경우
그러나, 제거는 유일한 장소를해야한다. 사전에 TKey = 5의 n + 3 값이 있지만 TKey = 3 의 m-1 값만 있으면 요소를 제거해야합니다.
이 트랜잭션 동작을 보장하는 가장 좋은 방법은 무엇입니까? 전체 사전을 잠근 다음 모든 것이 존재하는지 확인한 다음 지정된 모든 쿼리가 완료되면 요소를 제거하겠습니까?
어떻게 든 사전을 트랜잭션화할 수있는 방법이 있습니까?
using(var tx = new TransactionScope())
{
foreach(var query in queries)
// try to remove elements of query -> exception if not possible -> all others are back in place
tx.Commit(); // ok, all queries fulfilled, commit now
}
아니면 스레드 안전한 방법 TakeFromDictionary(IEnumerable<Query> queriesWhichMustBeFulfilled)
을 가지고 사전에 대한 래퍼 클래스를 작성하는 것이 좋습니다 : 뭔가처럼?
가장 좋은 방법은 무엇입니까?
내가 예상했던 것과 정확히 일치하지 않더라도이 답변을 수락했습니다. 당연히 트랜잭션 메모리는 아직 "엔터프라이즈 수준"의 더 많은 라이브러리가 지원할만큼 주류는 아닙니다. –