使用TPH时查询以包含鉴别器值

本文关键字:鉴别 包含 TPH 查询 使用 | 更新日期: 2023-09-27 18:24:53

当使用TPH时,我有从基继承的不同类型。我们有一个跨抽象类型进行查询的搜索。在结果中,我们希望显示类型:

即。摘要车辆

汽车:车辆卡车:车辆

在结果中,我想显示"类型",即"汽车"answers"卡车"。

我尝试使用GetType().Name,但失败了。

这是样品:

 IQueryable<CompanySearchResult> q = from company in _ctx.Companies
                                                select new CompanySearchResult
                                                {                                                        
                                                    CompanyName = company.CompanyName,
                                                    CompanyId = company.Id,
                                                    Type = company.GetType().Name
                                                };

使用TPH时查询以包含鉴别器值

您必须推迟投影,直到内存中有实体为止

 IEnumerable<CompanySearchResult> q = 
    _ctx.Companies.ToList()
        .Select( company =>
            new CompanySearchResult
            {                                                        
                CompanyName = company.CompanyName,
                CompanyId = company.Id,
                Type = company.GetType().Name
            } );

特别是,这意味着在投影之后不应该仍然有IQueryable,因为您操作内存中的集合。