在Entity Framework Core中选择包含存储库的特定列

时间:2017-07-23 15:25:21

标签: sql-server entity-framework-core

我有一张带有二进制列的大表用于图片。我需要在视图中显示此表的内容并使其可搜索。我尝试过只选择此处需要的列子集。但是,生成的SQL始终包含生成的查询中表的所有列。

public IQueryable<ApplicantDTO> GetApplicantQueryable()
{
    return DataContext.Applicants
           .Include(a => a.Nationality)
           .Select(x => new ApplicantDTO
                            {
                                Id = x.Id,
                                BirthDate = x.BirthDate,
                                Gender = x.Gender,
                                FirstName = x.FirstName,
                                LastName = x.LastName,
                                OtherName = x.OtherName,
                                MobileNo = x.MobileNo,
                                Age = x.Age,
                                Nationality = x.Nationality.National,
                                Admitted = x.admitted,
                                Completed = x.Completed
                            })
           .Where(a => a.Admitted == false && a.Completed == true)
           .OrderBy(a => a.LastName)
           .AsNoTracking();
    }

但是,不仅仅指定上面的行,而是从profiler生成的SQL是

SELECT 
    [a].[Id], [a].[BirthDate], [a].[BirthPlace], [a].[CompleteDate], 
    [a].[Completed], [a].[ContentType], [a].[CreateDate], 
    [a].[Denomination], [a].[Disability], [a].[Email], 
    [a].[FirstName], [a].[Gender], [a].[HomeTown], [a].[LastName], 
    [a].[MarryStatus], [a].[MatureApp], [a].[MobileNo], [a].[NationalityID], 
    [a].[OtherName], [a].[Passport], [a].[Pin], [a].[PostalAddress], 
    [a].[Region], [a].[Religion], [a].[ResAddress], [a].[SerialNo], 
    [a].[Title], [a].[VoucherID], [a].[admitted], [a.Nationality].[National] 
FROM 
    [Applicants] AS [a] 
INNER JOIN 
    [Nationality] AS [a.Nationality] ON [a].[NationalityID] = [a.Nationality].[Id] 
WHERE 
    ([a].[admitted] = 0) 
    AND ([a].[Completed] = 1) 
ORDER BY 
    [a].[LastName]

所有基础列都包含在查询中。

我尝试将其放入匿名类型,然后再将其转换为ApplicantDTO,但效果仍然相同。

出了什么问题?

0 个答案:

没有答案