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

Другие вопросы по тегам