2010-06-01 1 views
3

나는 역동적 인 데이터에 아주 감명을 받았으며, 간단한 사이트를 만들고 운영하는 것이 얼마나 쉽고 빠르는지를 알고 있습니다. 사람들의 기술/학위/등을 등록하기위한 간단한 내부 인사 관리 사이트에 사용할 계획입니다.ASP.NET 동적 데이터의 동시성 제어를 처리하는 방법은 무엇입니까?

저는 www.asp.net/dynamicdata에서 소개 비디오를 보았습니다. 결코 언급하지 않은 한가지는 동시성 제어를 처리하는 방법입니다.

내가 수동으로 변경 충돌 예외를 생성 앱이 사용자 친화적 인 메시지없이 실패로 (내가 본되지 않은 일부 설정이 아닌 경우) DD 상자에서 꺼내 자마자 바로 그것을 처리하지 않는 것 같다.

DD로 처리하는 사람은 누구입니까? 아니면 어떻게 든 사이트에 구축해야합니까?

답변

0

동시성은 DD에 의해 상자 밖으로 처리되지 않습니다.

0

하나 개의 접근법은 각각의 테이블에 "마지막 업데이트"소인 컬럼 (또는 이러한 GUID 등의 다른 고유 스탬프)에 추가하여,베이스 측에이를 구현하는 것이다.

그런 다음 각 테이블에 대해 업데이트 트리거를 만듭니다. 업데이트되는 각 행에 대해 "마지막으로 업데이트 된"스탬프가 데이터베이스의 행에있는 것과 동일한 것으로 전달됩니까? 그렇다면 행을 업데이트하지만 새로운 "마지막으로 업데이트 된"스탬프를 제공하십시오. 그렇지 않은 경우 특정 "데이터가 오래됨"예외를 발생시킵니다.

업데이트 할 각 행에 대해 클라이언트 측에서 "마지막으로 업데이트 한"스탬프를 새로 고쳐야합니다. 당신이 주시 클라이언트 코드에서

예외 "데이터의 유효 기간이 있습니다"하고 데이터를 새로 고침하고 자신의 변화를 다시 제출하도록 요청, 사용자에게 유용한 메시지를 표시합니다.

희망이 도움이됩니다.

+0

답변 해 주셔서 감사합니다. 어떻게 DD 형식의 클라이언트 코드에서 "Data is date of date"예외가 발생합니까? – Andrew

+0

솔직히 말해서 나는 실마리가 없다, 나는 "추측한다"예외는 층을 통해 거품이 일었다. 예외를 던지는 트리거를 작성하고 어떤 일이 발생하는지 확인하십시오. –

+0

예, 예외가 발생하여 메시지 상자를 통해 사용자에게 친숙하지 않은 영광으로 표시됩니다. 그 예외를 처리하는 방법을 잘 모르겠지만 그래도 사용자에게 더 좋은 메시지를 보여줍니다. – Andrew

0

모두 정의에 따라 다르지만, "기본"이란 무엇입니까? 왜냐하면 동시성을 처리하기 위해 많은 코드를 작성해야하지만, 일부 기능은이를 구현하는 데 도움이됩니다.

내가 가장 좋아하는 모델은 rowversion SQL Server의 데이터 형식을 기반으로 한 "낙관적 동시성"입니다. "마지막으로 업데이트 된"타임 스탬프와 같지만, 각 테이블마다 업데이트 트리거를 사용할 필요가 없습니다.. 테이블의 해당 "타임 스탬프"열의 모든 업데이트는 테이블 행의 모든 ​​데이터 업데이트시 SQL 서버에 의해 자동으로 수행됩니다. 나는 내 오래된 대답 Concurrency handling of Sql transactrion에 그것을 설명합니다. 나는 그것이 당신에게 도움이되기를 바랍니다.

0

동적 데이터가 기본 데이터 원본에 대한 업데이트를 수행한다는 인상을 받았습니다. 어쩌면 App_Init 섹션에 등록 된 데이터 메타 모델에서 동시성 모델 (비관적/낙관적)을 지정할 수 있습니다. 하지만 당신은 아마도 변경 오류를 저장할 수 없게 될 것입니다. 그래서 기본적으로 비관적 일 것이며, 결국 잃을 것입니다 ....

+1

그것은 죽음의 ASP.Net Yello Screen입니까? 어쩌면 당신은 global.asax 오류 섹션에서 오류를 잡을 수 있습니다. 질문에 오류를 게시 할 수 있습니까 – ggonsalv

+0

좋은 제안입니다! 다른 페이지로 리디렉션하는 중 ... – Andrew

0

죄송합니다. 예 DD는 프로젝트의 신속한 개발에있어서 너무 강합니다. 뿐만 아니라 그것은 .Net 4.0을위한 기반입니다. DD가 더욱 향상되었으며 .Net 4.0에 포함되었습니다.

DD 대부분 Linq to SQL에서 작동합니다. 나는 그 부분을 살펴 보라고 제안 할 것이다. SQL에 LINQ에서

당신은 당신이 새로운 가치를 업데이트하기 전에 이전 값을 확인 휘터를 지정이 속성을 찾을 수 테이블의 속성에 갈 때. 당신이 그 사실을 설정한다면 당신의 proble이 처리 할 것이라고 생각합니다.

는 당신에게 최고의 행운을 기원합니다.

서로 배우자. 이진 걱정이 주어진다

0

이 솔루션은 작동하고 널리 변경 (예를 들어, 소스 제어 프로그램, 위키 엔진 등)을 병합하는 GUI를 제공하는 플랫폼에서 사용됩니다. 그렇게하여 사용자 중 누구도 변경 사항을 잃지 않습니다. 반면에 많은 코드가 필요하거나 외부 구성 요소 나 DLL을 사용해야합니다. 당신이 행복하지 않은 경우

또 다른 방법은 편집중인 레코드를 잠그는 것입니다. 사용자가 변경 사항을 커밋하거나 세션이 만료 될 때까지는 해당 레코드를 편집 할 수 없습니다. 장단점이 있지만 첫 번째 옵션에 비해 코드가 거의 필요하지 않습니다.