2009-04-03 7 views
0

自動生成された削除ステートメントで問題が発生しました。私の考えでは、削除はちょうどだったはずです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

関連する問題