2010-01-08 3 views
1

현재 SubSonic 2.2를 사용하는 앱을 개발 중이며 테이블에서 복합 PKI 열 중 하나를 업데이트하는 데 문제가 있습니다.SubSonic 2.2를 사용하여 기본 키 값을 업데이트하십시오.

foreach (pageItem page in pages) { 
    page.IdFile = newIdFile; 
    page.PageNumber = counter; 
    counter++; 
    page.Save(); 
} 

이 내 기록을 업데이트하지 않습니다

내 코드는 약이있다.

내 pageItem 테이블에는 PK를 구성하는 4 개의 열이 있습니다. 난 단지 하나의 파일을 다른 파일로 옮기고, 그 ID와 페이지 번호를 제외한 모든 값을 본질적으로 복사하는 것을 피하기 위해 새 레코드를 만드는 것을 피하기 위해 그 중 하나를 업데이트하면됩니다.

내가 SQL 서버 프로파일을 사용하는 경우 다음 나는 다음과 같은 코드가 DB에 방출되는 것을 볼 수 있습니다

exec sp_executesql N'UPDATE [dbo].[pageItem] SET [IdFile] = @IdFile, [PageNumber] = @PageNumber WHERE [IdPage] = @IdPage AND [IdCont] 
= @IdCont AND [IdExp] = @IdExp AND [IdFile] = @IdFile; 
SELECT @IdPage AS id',N'@PageNumber int,@IdPage int,@IdCont int, 
@IdExp varchar(1),@IdFile int', @PageNumber=4,@IdPage=329, @IdCont=1, @IdExp='1', @IdFile=156 

그러니까 기본적으로 내 문제는 업데이트 이전 및 새 IdFile에 대해 다른 값을 사용하지 않는 것입니다 키는 모두 @IdFile 매개 변수를 사용합니다.

내 레코드를 업데이트하는 데 사용할 수있는 CodingHorror 사용을 권장하지 않는 해결 방법이 있습니까? 원시 SQL 문을 사용해도 상관 없습니다. SubSonic을 잠재력을 최대한 발휘하는 데 관심이 많으므로 어떤 조언도 대단히 감사하겠습니다.

감사합니다,

페르난도

답변

0

복합 PK와 많은 환경에서 통증이있을 수 있습니다. I 은 SS2.x가 그 (것)들을 아주 잘 지원하지 않는다는 것을 생각한다, 그러나 지금 그것을 확인하기 위하여 참고를 찾아 낼 수 없다. 테이블을 재구성하여 단일 PK 필드를 가질 수있는 방법이 있습니까?

+0

아마도이 경우에는 아니지만, 이러한 문제를 피하기 위해 음속의 추가 사용에 대해서는 분명히 고려할 것입니다. 이러한 유형의 문제가 버전 3에서 해결되었는지 알고 계십니까? – Fervelas

+0

죄송합니다, 모르겠다. 아직도 2.2를 사용하고 있습니다. – kevinw

0

이러한 특수한 경우를 부분 클래스 파일로 코딩해야합니다. 문제를 찾으려면 여러 기본 키가있는 테이블에 대해 생성 된 코드를 살펴보십시오. 그런 다음 생성되지 않은 파일에 필요한 모든 것을 코드화하십시오. 나는 v3가 복합 키를 취급하지 않는다고 생각한다.

0

Subsonic 3은 복합 기본 키를 지원하지 않습니다. 참고 : Rob의 - 작성자의 답변 -이 게시물의 내용 : SubSonic 3 and multiple PK columns

확실히 이것은 SubSonic 2에서도 지원되지 않습니다.

관련 문제