1

基本クラスがあり、派生クラスがあります。基本クラスは、EF4 TPH (Table-per-hierarchy) を使用してテーブルにマップされます。私のアプリケーションでは、ユーザーは多くの派生クラスの 1 つを選択でき、「Discriminator」列に正しく入力して保存する必要があります。

UI では、ユーザーは ID と名前 (基本クラスのプロパティ) のみを入力するため、基本クラス オブジェクトのリストにユーザー エントリを格納しています。ユーザーが実行時にどの派生型を選択したかがわかるため、これを行う方法がわかりません。

これまでのところ、ベース オブジェクトで Convert.ChangeType を使用して派生クラス オブジェクトを取得し、エンティティに Add を実行しようとしました。しかし、「オブジェクトは IConvertible を実装する必要があります」で失敗します。

他に何ができるかわかりません。何か案は?ありがとう。

4

2 に答える 2

0

使用var derivedEntity = Activator.CreateInstance(typeof(YourDerivedType));してから取り付けます。

または、さらに良いことに、エンティティフレームワークに任せてください。

var entity = Context.Set<TEntity>().Create();

あなたはどこContextにいますかDbContext

于 2012-09-04T20:22:16.967 に答える
0

オブジェクトを基本クラス オブジェクトのリストとして格納することもできますが、派生クラス オブジェクトをインスタンス化する必要があります。そもそもやらないと本当に違う授業が必要なの?

于 2012-09-04T20:23:58.643 に答える