2011-03-07 1 views
0

나는 최근에 새로운 vb.net windows app 프로젝트에서 사용하기 위해 SubSonic을 선택했으며 지금까지 정말 좋아했습니다! t4 템플릿을 사용하여 완벽한 시작과 방법으로 작성되므로 사용자 정의가 가능합니다.아음속은 기본적으로 데이터베이스 충돌을 처리 할 수 ​​있습니까?

어쨌든 Active Record와 MySql을 사용하고 있습니다. 나는 컨트롤이 바인딩 소스를 사용하여 아음속 데이터 클래스에 데이터 바인딩되는 양식을 가지고있다. 나는 경우 :

  1. 는 형태로 일부 내용을 변경하지만

  2. 또한 MySQL의 워크 벤치를 사용하여 DB 테이블의 데이터를 변경 한 다음

  3. 양식을 통해 변경 사항을 저장

데이터 충돌에 대한 경고/알림이 표시되지 않습니까? 아음속 데이터 클래스에서 Save()를 호출하여 워크 벤치 변경 사항을 덮어 씁니다.

이것은 아음속의 기능이 아닐 수도 있습니다. 내가 템플릿에 저장 코드에 추가 할 것입니다하지 않으면 그래서 I :

  1. 부하를 새로

  2. 는 신선한 레코드의 타임 스탬프에 기존 레코드의 타임 스탬프를 비교 기록

  3. 각 필드의 데이터를 비교하고 변경 모음을 작성하십시오. 사용자가 wht를 결정할 수 있도록 eventargs에 변경 사항 콜렉션과 함께 이벤트를 발생시키는 이벤트를 발생 시키려면

  4. 이벤트를 발생 시키십시오. 영형.

이미 완료된 경우이 작업을 수행하고 싶지 않습니다.

답변

0

데이터 충돌에 대한 경고/알림이 표시되지 않습니까? 워크 벤치 변화 이 아직 아음속의 기능하지 않을 수 있습니다 또는 내가 잘못 뭔가를해야만하고있는 중이 야

아음속 dataclass 에 저장()를 호출하여 덮어 쓰기?

SubSonic에는 낙관적 동시성 기능이 없습니다. 또한 "아직"이 아니며 "기간"입니다 - SubSonic 프로젝트에서 중요한 발전이 일어나지 않으며 오라클 지원에 대한 개발이 이루어지고 있습니다 (오랫동안 실현되지 못했던 목표).

나는 당신이 음속 삭제하고 다른 데이터 액세스 도구를 배우기 시작하는 것이 더 효율적입니다 제안거야

템플릿 에 저장 코드에 추가됩니다하지 않으면 Entity Framework 또는 NHibernate와 같은보다 강력한 기능을 제공합니다. 이것은 SubSonic에서 직면하게 될 마지막 한계는 아닐 것입니다.

나는 템플릿에 저장 코드에 추가 할 것입니다하지 않으면 그래서 I :

  1. 부하를 새로

  2. 는 신선한에 기존 레코드의 타임 스탬프를 비교 기록 레코드의 타임 스탬프

  3. 각 필드의 데이터를 비교하고 변경 모음을 구성

  4. 변경 사항 모음을 eventargs에 넣으면 사용자가 할 일을 결정할 수 있습니다.

이 기록의 새 복사본을로드하여 시작 불필요하게 비효율적이다. 더 나은 대안은 timestamp 열에 대한 업데이트에 where 절을 추가하여 기본 키와 timestamp 열이 일치하는 경우에만 업데이트가 수행되도록하는 것입니다. 영향을받은 레코드 수를 검사하여 이러한 방식으로 동시성 위반을 감지 할 수 있습니다. 영향을받는 레코드 수가 0이면 레코드가 업데이트 또는 삭제 된 다음 복사본을로드하고 충돌 해결을 시작할 수 있습니다.

+0

동시성 위반에 대한 입력의 경우, 확실히 그 방향으로 향할 것입니다. 나는이 사이트에서 '아음속 죽어 가는가'라는 질문을 읽고 롭은 꽤 설득력있는 대답을했다. – ajp

+0

그것은 죽어 가고 있지 않으며, 그것이하는 일을합니다. 어떤 기능을 완벽하게 사용할 수 있습니다. 그러나 동시성이나 객체 간의 관계 관리에 많은 도움을 얻지는 못할 것이고 그 종류의 새로운 기능은 추가되지 않을 것입니다. Rob이 말했듯이, 그것은 ORM이 아닌 쿼리 도구입니다. –