4

TableperTypeを使用して継承されたテーブルに対してlinqtoentitiesクエリを実行しようとしています。

私が抱えている問題は、継承されたテーブルのプロパティだけを取得できず、ベーステーブルのプロパティしか取得できないことです。

var qry = from i in _DB.BaseTable
where i is catalogueModel.InheritedTable
// Field Doesn't Exist
// && i.InheritedTableField == "Value"
select i;

継承されたテーブルをそのタイプにキャストしようとすると...

var qry = from i in _DB.BaseTable
where i is catalogueModel.InheritedTable
&& (i as catalogueModel.InheritedTable).InheritedTableField  == "Value"
select i;

...コードはコンパイルされますが、次のようなクールなエラーが発生します

作業テーブルではテキストポインタのみが許可され、テキスト、ntext、または画像列は許可されません。クエリプロセッサは、作業テーブルにテキスト、ntext、または画像の列を必要とするクエリプランを作成しました。

私の質問は、タイプごとのテーブルを使用するときに、linqの継承テーブルのプロパティにエンティティにどのようにアクセスするのかということだと思います。

4

2 に答える 2

8

使用する 。タイプ():

var qry = from i in _DB.BaseTable.OfType<InheritedTable>()
          select i.InheritedTableField;
于 2009-02-18T19:25:17.477 に答える
0

ISも使える

var qry = from i in _DB.BaseTable where i is InheritedTable select i.InheritedTableField; 

他にもいくつかあります (Entity SQL を使用)。

var q = SELECT VALUE c FROM OFTYPE(yourcontext.yourbaseclass, yourmodel.yoursubclass) AS c

var q = SELECT VALUE c FROM yourcontext.yourbaseclass AS c where c IS NOT OF (yourmodel.yoursubclass)
于 2010-11-08T15:00:12.927 に答える