ここに興味深い問題があります。指定されたテーブルに列 x、y、z が含まれていることだけを知っているが、コンパイル時にどのテーブルを扱っているかを知らないテーブル UPDATE を実行できる LINQ to SQL を使用してコードを記述する方法はありますか?
DBスキーマにいくつかの列を共有するいくつかのテーブルがあり、どのテーブルを扱っているかに関係なく、論理手順が同一のセットベースのUPDATE操作を適用する必要があります。
簡単な例を次に示します。隣接モデル階層を実装する 3 つのテーブルがあるとします (つまり、各行には主キー ID と自己参照の親 ID 列が含まれます)。各テーブルには、「無効」のブール フラグもあります。これらのエンティティのいずれかのインスタンスを無効にすると、子アイテムをカスケードする必要があります。
UPDATE MyTable SET 無効 = 1 WHERE ID = @ID または Parent_ID = @ID
エンティティごとにこの種の LINQ ステートメントを記述したくありません。DRY に違反しています。この例では些細なことのように思えるかもしれませんが、例が複雑になるにつれて、重複するコードの量が増えていきます。インターフェイスとおそらくジェネリックを使用してそれが可能であるに違いないと確信していますが、エレガントなソリューションを考え出すのに苦労しています。