使用TPH时查询包含判别器值

时间:2014-09-26 17:34:10

标签: c# entity-framework entity-framework-6 discriminator tph

使用TPH时,我有从基础继承的不同类型。我们有一个搜索抽象类型的查询。在结果中,我们想要显示类型:

即。抽象车辆

汽车:车辆 卡车:车辆

在结果中,我想显示'type' - 即。 '汽车'和'卡车'。

我尝试使用GetType()。名称,但这失败了。

以下是样本:

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

1 个答案:

答案 0 :(得分:1)

你必须推迟投影,直到内存中有实体

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

特别是,这意味着您在投影后不应该IQueryable,因为您在内存中收集。