C#エンティティフレームワークを使用して、プロジェクトのSQLサーバーにデータをマップしています。私は、エンティティフレームワークを使用して、サブクラス化されたエンティティにテーブルがなくても、識別子フィールドに基づいてカスタムサブクラスを自動的に生成する方法を見つけようとしています。
例:
エンティティフレームワークにA
は、フィールドを持つオブジェクトがありますtype
。私も以下を持っています
public class B : A {
}
public class C : A {
}
type
たとえば、フィールドがたとえばであるとエンティティフレームワークに認識させてから、クラスB
のインスタンスを作成する方法を探しています。B
クラスには、データベースに永続化する必要のあるデータはありません。これらは、別のテーブルの行の単なるラッパーです。
例:
アイテムオブジェクトのテーブルがあります。各アイテムオブジェクトには、アイテム設定のコレクションとアイテムタイプフィールドがあります。
アイテムにはさまざまな種類(テキスト、ラジオ、チェックボックス)があり、抽象メソッドを使用してすべて異なる方法でレンダリングされますrender()
。これらの各サブタイプには、そのオブジェクトに必要な特定のアイテム設定のセットもあります。
データベースにマップせずにエンティティサブクラスを作成できる場合は、TextItemをItemのサブクラスにし、render()
メソッドを実装し、アイテム設定テーブルの各値にマップするプロパティを追加します。次に、データベースから新しいアイテムをプルするときに、タイプフィールドに基づいて、ディスクリミネーターに基づいて特定のクラスが自動的に作成されます。
私はDBMLを使用してこの種のことを行いました。より強力なエンティティフレームワークを使用したいのですが、私が探していることを実行する方法がない可能性があります。