0

Я следующий объекты в моем проекте (Чайлдс более чем два):Fetch записи из только родительской таблицы, используя Entity Framework

enter image description here

Есть ли способ загрузки записей из только родительской таблицы (без каких-либо дополнительных объединений), используя EF, когда я использовал TPT стратегию для моего наследства?

по следующим кодам:

var result = ctx.Parents.Find(5); 
//or 
var result = ctx.Parents.OfType<Parent>().Find(5); 

EF генерирует огромный SQL запрос! (в моей реальной модели у меня есть более чем 2 Чайлдс)

+0

Устал ли вы 'var result = ctx.Parents.Find (5);' – CodeNotFound

+0

@CodeNotFound: да, результат не отличается. – Masoud

+0

Возможно, вам стоит взглянуть на SQL View :) – CodeNotFound

ответ

2

запрос Если вы ctx.Parents или ctx.Parents.OfType<Parent>(), вы всегда просите EF, чтобы получить всеParent лица встречая условие (Id == 5, в данном случае). EF не может заранее знать, будет ли это подтипом или не подтипным объектом Parent (который он мог бы, если Parent не является абстрактным), поэтому он всегда должен выполнять полный запрос.

TPT - не очень удобная для пользователя модель. Я бы не использовал его (и избегайте наследования как можно больше, если на то пошло).

+0

Какую стратегию наследования вы предлагаете более удобной для пользователей моделью? – Masoud

+0

Два других, TPH и TPC лучше в этом отношении. –