2010-04-08 1 views
2

변경하려고하는 레거시 응용 프로그램과 함께 SQL CE에 대해 작업 할 수 있도록 작업하고 있지만 원래 SQL Server에 대해 작성되었습니다..NET 자동 생성 테이블 어댑터 명령의 기능은 무엇입니까? 예 : UPDATE/INSERT 다음에 SELECT가 표시됨

내가 지금 받고있는 문제는 dataAdapter.Update를 시도 할 때 SQL CE가 명령 텍스트에서 SELECT 키워드를 기대하지 않는다는 것입니다. 나는 SQL CE가 배치 SELECT 문을 지원하지 않기 때문이라고 생각한다. 그것이 무엇을하고

this._adapter.InsertCommand.CommandText = @"INSERT INTO [Table] ([Field1], [Field2]) VALUES (@Value1, @Value2); 
SELECT Field1, Field2 FROM Table WHERE (Field1 = @Value1)"; 

자동으로 생성 된 테이블 어댑터 명령은 다음과 같습니다 ...? 데이터 테이블의 새 레코드를 데이터베이스에 삽입 한 다음 해당 레코드를 데이터베이스에서 다시 데이터 테이블로 읽어 오는 것 같습니다. 그게 무슨 말이야?

코드를 살펴보고 이러한 SELECT 문을 모두 제거 할 수 있습니까? 아니면 SQL CE에서 이러한 데이터 어댑터를 사용하려는 내 문제를 해결하는 더 쉬운 방법이 있습니까?

오랫동안 사용법을 알고있는 사람들처럼이 테이블 어댑터를 다시 생성 할 수 없습니다.

답변

1

업데이트 후 데이터베이스에서 최신 값으로 개체를 업데이트하는 것입니다. 항상 나에게 조금 불필요한 것처럼 보였습니다 ...

이것은 유지 관리의 관점에서 불쾌합니다. 옵션이있는 경우이 모든 것을 적절한 것으로 추상화하여 많은 번거 로움을 덜어줍니다 데이터 레이어.

+0

자동 증가/ID/rowguid 필드를 다시 가져 오는 것이 맞지만 여기서는 조금 불필요한 것으로 보입니다. +1 나를 때리는. – Lazarus

+0

@Lazarus, 음, 나는 동의한다. 나는 항상 그것이 너무 과잉이라고 생각했다. 나는 또한 동시성 검사 (내가 결코 좋아하지 않은)를 위해 그것이 DB에있는 현재라고 믿는 필드를 설정하는 데에도 사용되었다고 생각한다. – Paddy

+0

아 ... 그거 재미 있어요. 명령 텍스트에서 SELECT를 제거하려고 시도했지만 동시성 위반 예외가 발생했습니다. 그 오류를 피하기 위해 SELECT가 필요하다고 생각합니까 아니면 다른 것이 될 수 있습니까? – RickL

0

필드 값이 테이블의 트리거에 의해 변경 될 수 있습니다. 의미심장 한, 나는 자동 생성 된 상용구에서 생각했을 것이다.

비록 field1이 기본 키라고 가정하는 select 문이 있지만 어쩌면 autogen 코드가이 코드를 생성하기 전에 있는지 확인합니다.

+0

예, 자동 생성 코드가 기본 키 필드를 선택합니다. 위에서 작성한 예제는 "sanitized"코드입니다. – RickL

관련 문제