2009-04-03 2 views
0

자동 생성 된 delete 문에 문제가 있습니다. 제 생각에는 삭제가 방금 되었어야합니다Visual Studio에서 자동 생성 된 sql 쿼리의 품질

DELETE [tablename] where [PK] = @param 

대신 4 개의 OR로 쿼리를 생성합니다.

DELETE FROM Market 
WHERE  (@IsNull_Name = 1) 
AND (Name IS NULL) 
AND (@IsNull_Description = 1) 
AND (Description IS NULL) 
AND (MarketId = @Original_MarketId) 
OR 
(@IsNull_Name = 1) 
AND (Name IS NULL) 
AND (Description = @Original_Description) 
AND (MarketId = @Original_MarketId) 
OR 
(Name = @Original_Name) 
AND (@IsNull_Description = 1) 
AND (Description IS NULL) 
AND (MarketId = @Original_MarketId) 
OR 
(Name = @Original_Name) 
AND (Description = @Original_Description) 
AND (MarketId = @Original_MarketId) 

데이터 세트 도구는 PK/색인과 관련된 질의를 거의 주장하지만 왜 그런 복잡한 코드를 생성합니까?

누군가가 나를 어떤 문서로 안내 할 수 있다면이 '우수 사례'코드입니까?

분명히 간단한 경우는 99 %의 필수 코드이며 다른 1 %는 자동 생성 코드를 편집하거나 자체 코드를 추가해야하는 시간이어야합니다.

답변

1

이것은 낙관적 동시성을 기반으로합니다. 삭제하기 전에 모든 값이 동일한 지 확인해야합니다.

+0

이제 큰 쿼리가 더 합리적이라고 말했을 것입니다. 내가 겪고있는 문제는 FormView를 위의 delete 문을 사용하는 DataSource에 바인딩하는 것입니다. 삭제를 수행하지 않았습니다. 아마도 FV가 DeleteTemplate에서 올바른 값을 바인딩하지 못했을 것입니다. – Adrian

관련 문제