0

自動生成された削除ステートメントに問題がありました。私の考えでは、削除はちょうどあったはずです

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% は、自動生成されたコードを編集するか、独自のコードを追加する必要がある場合です。

4

1 に答える 1

1

これは楽観的同時実行性に基づいています。削除を行う前に、すべての値が同じであることを確認する必要があります。

于 2009-04-03T10:13:22.910 に答える