ParentRef 列と SortIndex 列に Unique キーを持つデータベースがあります。
LINQ で、2 つの SortIndex 値を切り替えたいと考えています。一度に複数のユーザーが存在できるように、これを 1 つのトランザクションで実行したいと考えています。LINQ を使用して値を一度に切り替えて、Unique キーに違反しないようにするにはどうすればよいですか?
var dc = new MyDataContext();
using (TransactionScope trans = new TransactionScope())
{
var pageToBeMoved = dc.Pages.Where(p => p.ID == id).Single();
var pageToBeSwitched = (from p in dc.Pages
where p.ParentRef == pageToBeMoved.ParentRef
where p.SortIndex > pageToBeMoved.SortIndex
orderby p.SortIndex ascending
select p).First();
int tempSortIndex = pageToBeMoved.SortIndex;
pageToBeMoved.SortIndex = pageToBeSwitched.SortIndex;
pageToBeSwitched.SortIndex = tempSortIndex;
dc.SubmitChanges();
trans.Complete();
}