2

Requestparentというクラスが1つあります。requesttype1、requesttype2、requesttype3という3つのクラスがあり、3つすべてがRequestParentから継承しています。

画面の1つで、グリッド内のすべてのタイプのすべての開かれた要求を表示するためのクエリを作成する必要があります

のようなもの:オープン日-タイプ-によって開かれました。

requestparentにクエリを実行すると、タイプが取得されません。

別の解決策は、子オブジェクトに対して3つの異なるクエリを実行することです。

EFはディスクリミネーター列を自動的に作成しました。

4

1 に答える 1

2

基本タイプに対してselectクエリを実行する場合。次に、ifは子テーブルへの結合ステートメントを作成し、子タイプのエンティティを作成します。

したがって、ベーステーブルにクエリを実行しても、子タイプのエンティティが作成されます。ステートメントを使用Entity.GetType()して、エンティティのタイプを取得できます。

たとえば、Baseというベースエンティティと、Derived1およびDerived2という2つの派生エンティティがあるとします。次に、次のselectステートメントを実行すると、

List<Base> temp = (from o in context.Base
           select o).ToList<Base>();

タイプDerived1およびDerived2のエンティティがあります。エンティティのタイプを判別するには、oftypeを使用するだけで十分です。例えば;

if (temp[0].GetType() == typeof(X))
   {
          .... 
   }
于 2012-05-16T08:33:13.417 に答える