2

ユーザーがカスタム列をテーブルに追加できるようにするアプリケーションがあります (最善のアイデアではないかもしれませんが、それがその方法です)。

現在、データアクセス レイヤーを (再) 設計しており (以前は実際にはありませんでした)、SQL データベースをクエリするときに、データマッパーでパラメーター化されたクエリを使用します (以前は、SQL 文字列を連結し、すべてをエスケープしました)。入力)。

現在、これらのレコードのクエリ、作成、および更新の両方を行うために、カスタム列を処理する最善の方法を決定しようとしています。カスタム属性は「ビジネス オブジェクト」のディクショナリに格納されるので、次のようにすることを考えていました。

データのクエリ

  • SELECT * を使用してすべての列を取得し、プロパティを入力して、残り (カスタム データ) をビジネス オブジェクトのディクショナリに格納します。

作成/更新

  • テーブル内のすべての列を繰り返します (次のようなものです: SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME = 'TableName'
  • ディクショナリとテーブルの両方に存在する列を確認し、ディクショナリの値を変数として SQLCommand に追加することにより、SQL 文字列を (パラメータ化された変数名で) 生成します。

または、パラメータ化されたクエリを使用しながら、より良いアプローチはありますか?

4

1 に答える 1

2

アドホック列を追加する場合、ORMは非常に注意が必要です。いくつかの点で、DataTable/ DataAdapter(私はファンではありません)に戻ることはオプションかもしれません。個人的には、最初にカスタムデータを保存するための他のオプションを検討します。

  • xml列_
  • 各レコードに対するキーと値のペアのセット(2番目のテーブル内)
  • で区切られた他の形式[n]varchar(max)

本当に列を追加する必要がありますか?

于 2009-12-17T22:49:14.200 に答える