2

この質問については、簡潔かつ明確にしようと思います。

エンティティ フレームワーク 4 を使用する asp.net mvc アプリがあります。

私たちのビジネス モデルは比較的単純です。Photo(s) というオブジェクト (テーブルに対応) があります。その photos テーブルには、オブジェクトのプロパティに一致するいくつかの列があります。説明、タイトル、日付など。また、他のテーブルの外部キーを参照する数値列もあります: AuthorId、LicenseId など...

著者とライセンスのテーブルは、それ自体が複雑で、複数のフィールド (タイトル、概要、日付など) があります。

このアプリケーションを使用して写真を表示するクライアントが複数あります。写真を表示するときに表示されるフィールドと、それらのフィールドを編集するときに表示されるフィールドを、各クライアントに指示してもらいたいと思います。

私の考えは、クライアント a が写真を表示するときにフィールド 1、フィールド 2、およびフィールド 3 を表示し、クライアント b がフィールド 1、フィールド 4、およびフィールド 5 を表示するようにテーブルをセットアップすることです。ただし、これらのフィールドの一部は、メインの写真テーブルの単なる列ではなく、子テーブルのフィールドである場合があります。したがって、Field1 は次のようになります: Table.Photos.Title -> オブジェクトに対応する: Objects.Photo.title... しかし、Field3 は次のようになります: Table.Licenses.LicenseSummary -> オブジェクトに対応する: Objects.Photo. License.LicenseSummary

非常にデータ駆動型の環境を実現するために使用する方法論を理解しようとしています。そのため、DB では、このオブジェクト/プロパティを (表示または編集用に) 表示すると、どのテーブルにマップするかがわかります。その情報を引き出す必要があります。また、編集中に...テキストフィールドだけでなく、そのタイプのプロパティである場合、使用可能な値のリストを取得する方法を提供します。

私はこれが何を含むかの例を探しています.私たちのモデルは実際にはこれより複雑ですが、これは私たちが達成しようとしていることのアイデアにすぎません. 私がやろうとしていることが正常かどうかはわかりませんが、おそらく反射が含まれていますか? これは私にとって新しい領域です。

4

1 に答える 1

0

クライアントが独自のカスタム フィールドを定義している場合は、キーと値のペア テーブルを提供するだけです。

PhotoID    FK
Key        string
Value      string
Display    bool

これは本質的にEAVに相当することに注意してください。これには、独自の一連の問題があります。

既存のフィールドに対するアクセス許可に関するものだけである場合は、その情報を取得する必要があります。

PhotoID    FK
ClientID   FK
FieldName  string
Display    Bool

この情報を使用して、ビュー内のフィールドの表示を禁止できます。これを行う最も簡単な方法は、ビュー自体でループを使用し、Displayが に設定されている場合にのみフィールドを出力に書き込むことtrueです。

于 2013-03-27T16:14:37.787 に答える