我正在尝试对使用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中的继承表的属性?
答案 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)