DML および Select 用のすべての SQL スクリプトを使用して静的クラスを管理しています。
ただし、検索で複数の検索条件を使用できるシナリオがあります。
例えば
Select items from table_items where capacity = 10 and type = 'metal'
容量またはタイプが言及されていない場合、クエリはすべての項目を返す必要があります。
Select items from table_items
ここにはいくつかの組み合わせがあります。
- 容量は空の入力にすることができます
- タイプは空の入力にすることができます
- どちらも空の入力にすることができます
SQL スクリプトの静的クラスに 3 つの異なる SQL クエリが必要ということですか? 上記の各組み合わせを case/if-else で検証しますか? 私には意味がありません。特に、アプリケーションがデータ アクセス、エンティティ モデルを使用して 3 層アーキテクチャで個別に構築されていること。
おそらく、私はルーツ/基本を完全に忘れています。動的 SQL クエリを書きたくありません。
このシナリオの適切な回避策は何ですか?
編集:元のクエリ
public static readonly string SqlGetItemsBy_ID_Capacity_Type = "SELECT TT.[ID], " +
"TT.[CAPACITY], " +
"TT.[TYPE], " +
//some code here
"FROM [ITEMS] AS TT " +
"WHERE //some code here +
"AND TT.[CAPACITY] = CASE WHEN 0 = @Capacity" + //+ numCapacitySearch.Value +
"THEN TT.[CAPACITY] ELSE @Capacity END " + //+ numCapacitySearch.Value +
"AND TT.[TYPE] = CASE WHEN ??? IS NULL THEN TT.[TYPE] ELSE @Type END" ;
???
NULLと比較する場合の参照...