linq到实体继承查询问题

时间:2009-02-18 18:51:01

标签: c# linq entity-framework ado.net linq-to-entities

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

我遇到的问题是我无法在Inhertied表中获取基表上的属性。

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或image列   表

我想我的问题是在使用Table per Type时,您应该如何访问linq中的继承表的属性?

2 个答案:

答案 0 :(得分:8)

使用。OfType():

var qry = from i in _DB.BaseTable.OfType<InheritedTable>()
          select i.InheritedTableField;

答案 1 :(得分: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)