2009-12-03 1 views
0

우리 웹 페이지에서 div를 묶어주는 단일 테이블이 데이터베이스에 있습니다. 각 div에는 픽셀 너비, 높이, 위쪽 및 왼쪽이 테이블의 개별 레코드로 저장되어 있습니다. 기본 키가 있습니다. 테이블에서 모든 div를 웹 페이지로로드하고 사용자가 스퀘어를 재정렬 한 다음 단일 트랜잭션에서 변경된 사각형을 Linq "OnSubmit"메소드를 사용하여 테이블에 다시 저장합니다.Linq 거래를 사용하여 동일한 기본 키를 가진 레코드를 삭제하고 삽입하는 방법

문제는 모든 사각형을 삭제 한 다음 모든 사각형을 다시 삽입하는 것입니다. 트랜잭션이 없으면 정상적으로 작동합니다. 트랜잭션을 사용하면 삭제할 모든 레코드에 플래그를 지정하고 삽입이 실제로 삭제 된 것으로 표시된 레코드를 업데이트합니다. 결국 일부 사각형이 누락되었습니다.

DeleteOnSubmit(), InsertOnSubmit(), 결국 .SubmitChanges()를 수행합니다.

어디에서 실수할까요? 동일한 트랜잭션에서 모두 삭제 및 다시 삽입하는 방법은 무엇입니까? 분명히 우리는 SubmitChanges()를 삭제 한 후에 처리 할 수 ​​있지만, 같은 트랜잭션에 넣지는 않습니다.

아이디어가 있으십니까? 어떤 패턴? 계속하려면 실제 소스 코드가 필요합니까?

+0

왜 데이터를 업데이트하지 않는거야? 삭제/삽입은 시간 낭비입니다. 또한 기본 키가 자동 생성되거나 수동으로 생성합니까? – tvanfosson

+0

키가 자동 생성되지 않습니다. 웹 페이지는 어떤 사각형을 저장 할지를 반환합니다. 우리는 RAM에있는 레코드를 사용하여 반환되는 것의 보수를 삭제할 수 있다고 생각합니다. 사각형도 여러 사용자가 조작하지만 사각형에는 색상이 있고 한 번에 하나의 색상 만 변경합니다. –

+0

이것은 흥미로운 것 같습니다 http://msdn.microsoft.com/en-us/library/bb386982.aspx –

답변

2

거래를 직접 열고 필요한 경우 커밋하는 것이 좋습니다.
이 경우 내부 트랜잭션이 열리지 않습니다.

 
t = db.Connection.BeginTransaction(); 
db.Transaction = t; 
DeleteOnSubmit(); 
SubmitChanges(); 
InsertOnSubmit(); 
SubmitChanges(); 
t.Commit(); 
+0

그게 정확히 뭐하는거야,하지만 삭제가 작동하지 않습니다. 7 개의 레코드를 삭제하고 6 개를 삽입하면 여전히 7 개의 레코드가 남아 있습니다. 오류는 발생하지 않습니다. – Gullbyrd

+0

http://www.devart.com/company/contactform.html을 통해 문제를 재현 할 수있는 테스트 프로젝트를 보내주십시오. – Devart

관련 문제