のセルに基づいてPOCOオブジェクトをサブクラスにマッピングするエンティティフレームワークを使用しました。私は、行動だけが異なるいくつかのオブジェクトを持っています。 DBに関連するデータの行は同じです。このビヘイビアを含むクラスを定義する行がデータベースにあります。IエンティティFrameworkとC#POCOオブジェクトを使用していたデータベースの行
私は本当に一般的な動作を実装する抽象クラスを使用して、データベース内のその行のベースとEntity Frameworkのからサブクラスのインスタンスを作成したいと思います。この例は、私が取り組んでいるものではありませんが、それは類似していると思います。これが単なる類推であり、私は文書管理について何も知らないので、これは文書を扱うには間違った方法です。
たとえば、「文書」表のこれらの2つの行行):理想的
DocumentId Description DocumentType
314 A word processing document WordProcessingDocument
315 A spreadsheet SpreadsheetDocument
、Iは抽象ドキュメントクラスに記載の一般的な挙動を有するであろう1 Document.WordProcessingDocument一Document.SpreadsheetDocument、で終わることになります。 Entity Frameworkはこれらのオブジェクトと他のオブジェクトとの関係を引き続き管理しています。
これはできますか?または、Entity Frameworkはテーブルごとに1つのクラスのみをインスタンス化できますか?これらのテーブルにはデータが存在しないため、各サブタイプに対して新しいテーブルを作成するのは意味がありません。これらのサブクラスは、データではなく動作のみが異なります。 1関係:
FYI - 今私は、戦略デザインパターンを使用してエンティティフレームワークに動的にサブ分類オブジェクトを作成することができないの周りに働いています:私は、Entity Frameworkの負荷Documentオブジェクトのようなものを持っており、各ドキュメントには、コンポーネント(例えばを持っています、WordProcessingComponent、SpreadsheetComponent)を使用して、IDocumentComponentインターフェイスを実装し、それ以外の場合はサブクラスに入るユニークな動作を定義します。次に、コンポーネントメソッドを呼び出すたびに、関連するすべての状態を持つHashTableをDocumentオブジェクトからそのコンポーネントに渡します。 –
ありがとう!私は、新しいサブクラス/コンポーネントを作成するユーザーがEDMXファイル内のクラスをマップする必要がないように(コンポーネントマッピングw/Reflectionを処理できるように)、コンポーネントテクニックに固執することになりました。私は新しいコンポーネントタイプを追加するために、複数のプロジェクトにまたがって多くの異なる開発者が参加することを期待しています。新しいコンポーネントが追加されるたびにEFコードを更新する必要はありません。これまでの両方の答えは素晴らしいですが、私はLadislav'sに「階層ごとの表」という用語を含めて受け入れています。そのため、より多くの情報を探すときに何を探すべきか、そして「ハウツー」のリンクを知っていました。 –