Запрос на включение значения Discriminator при использовании TPH
При использовании TPH у меня разные типы наследуются от базы. У нас есть поиск, который запрашивает абстрактный тип. В результатах мы хотим показать тип:
то есть. абстрактный автомобиль
Автомобиль: Автомобиль Грузовик: Автомобиль
в результатах я хочу показать "тип" - т.е. "Автомобиль" и "Грузовик".
Я попытался использовать GetType().Name, но это не удалось.
Вот образец:
IQueryable<CompanySearchResult> q = from company in _ctx.Companies
select new CompanySearchResult
{
CompanyName = company.CompanyName,
CompanyId = company.Id,
Type = company.GetType().Name
};
1 ответ
Решение
Вы должны отложить проецирование до тех пор, пока в памяти не появятся объекты
IEnumerable<CompanySearchResult> q =
_ctx.Companies.ToList()
.Select( company =>
new CompanySearchResult
{
CompanyName = company.CompanyName,
CompanyId = company.Id,
Type = company.GetType().Name
} );
В частности, это означает, что вы еще не должны иметь IQueryable
после проекции, когда вы работаете с коллекцией в памяти.