2009-02-18 5 views
4

Я пытаюсь выполнить запрос linq к объектам в таблице, наследуемой с использованием Table per Type.linq для задачи наследования наследования объектов

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить в свойствах таблицы 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 или столбец изображения в таблице работ .

Я полагаю, что мой вопрос: как вы должны получить доступ к свойствам Inherited tables в linq для объектов при использовании Table per Type?

ответ

8

Использование. OfType():

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

Грейг, кончик шляпы к вам сэр. Похоже, вы решили мою проблему. Much'o Спасибо. BTW - Знайте о любых хороших ссылках на объекты Linq для объектов при использовании наследования? – CraftyFella

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) 
Смежные вопросы