アプリケーション フィールドを含む「フィールド」というテーブルがあります。このテーブルには、各フィールド (TableName、ColumnName、JoinType (inner/outer)) のメタデータを格納します。
私は何かが働いていますが、私が望むほどきれいではありません。
誰もこれに取り組んだことがありますか?
より良い慣行に関するいくつかのアイデアを探しています。
アプリケーション フィールドを含む「フィールド」というテーブルがあります。このテーブルには、各フィールド (TableName、ColumnName、JoinType (inner/outer)) のメタデータを格納します。
私は何かが働いていますが、私が望むほどきれいではありません。
誰もこれに取り組んだことがありますか?
より良い慣行に関するいくつかのアイデアを探しています。
動的データ/フィールドは常に楽しいものです。
私が以前にこれにアプローチした方法は、必要なフィールドを定義するテーブルを用意することです。非常に基本的な例は次のとおりです。
GroupId int, <- 共通の目的のためにフィールドをグループ化できます
FieldId int, <- 結合の一意の識別子
FieldName varchar(100), <- 明らか
DataType int <- テキスト、電話、電子メールなど、特別な処理特性を持つ可能性のある使用可能なタイプを含むテーブルに結合します。
DisplayOrder int, <- フィールドが画面に表示される順序。
次に、実際のデータを保持する別のテーブルがあります: EntryId int, <- 値を一意のエントリ ポイントにグループ化します。GroupId int、FieldId int、Value varchar(max) <-データが含まれると思われる数値を使用します。または、適切なバージョンの SQL サーバーがある場合は max
最後に、レポート作成を容易にするために、実際のデータを 90 度回転させるビューを動的に生成します。
このようにすることで、基礎となるコードを変更することなく、何を収集するかについて多くの自由が得られます。
私は過去に、テーブルを自動的に結合し、それらを組み合わせて動的レポートを生成できるクエリ ジェネレーターを作成しました。
私は、今日、NHibernate を取ると思います。これは ORM ですが、結合を管理し、メタデータと非常によく似たマッピング データに従ってクエリを作成します。
もちろん、NHibernate でカバーされていない特定のことを行う必要があります。しかし、それは素晴らしいスタートです。