4

我正在尝试对使用Table per Type继承的表执行 linq to entity 查询。

我遇到的问题是我无法获取 Inhertied 表上的属性,而只能获取 Base Table 上的属性。

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;

...代码编译,但我得到一个很酷的错误,内容如下

工作表中只允许使用文本指针,不允许使用 text、ntext 或 image 列。查询处理器生成了一个查询计划,该计划需要工作表中的 text、ntext 或 image 列。

我想我的问题是,当使用Table per Type时,您应该如何访问 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 回答