ユーザーがカスタム列をテーブルに追加できるようにするアプリケーションがあります (最善のアイデアではないかもしれませんが、それがその方法です)。
現在、データアクセス レイヤーを (再) 設計しており (以前は実際にはありませんでした)、SQL データベースをクエリするときに、データマッパーでパラメーター化されたクエリを使用します (以前は、SQL 文字列を連結し、すべてをエスケープしました)。入力)。
現在、これらのレコードのクエリ、作成、および更新の両方を行うために、カスタム列を処理する最善の方法を決定しようとしています。カスタム属性は「ビジネス オブジェクト」のディクショナリに格納されるので、次のようにすることを考えていました。
データのクエリ
- SELECT * を使用してすべての列を取得し、プロパティを入力して、残り (カスタム データ) をビジネス オブジェクトのディクショナリに格納します。
作成/更新
- テーブル内のすべての列を繰り返します (次のようなものです: SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME = 'TableName'
- ディクショナリとテーブルの両方に存在する列を確認し、ディクショナリの値を変数として SQLCommand に追加することにより、SQL 文字列を (パラメータ化された変数名で) 生成します。
または、パラメータ化されたクエリを使用しながら、より良いアプローチはありますか?