EF Core LINQ从包含的实体中排除列

时间:2017-11-15 06:13:55

标签: c# entity-framework linq asp.net-core ef-core-2.0

我正在使用ASP.Net Core 2.0和Entity Framework,我正在尝试将模型返回到包含Employment实体的页面,其中包含了EmploymentDocument实体的集合。对于后者,我不想加载数据(byte [])列,但我确实想要所有其他列,最重要的是FileName。

我有的linq查询加载包括数据列在内的所有内容:

var employment = await _context.Employment
    .Include(e => e.EmploymentDocuments) // will load all associated document data
    .SingleOrDefaultAsync(m => m.EmploymentID == id);

此处的目的是能够显示页面上所有文档名称的列表,其中包含可用于下载所选文件数据的链接。

1 个答案:

答案 0 :(得分:1)

手动选择所需的所有数据并将其存储在某个Dto对象中:

var employment = await _context.Employment
    .Where(m => m.EmploymentID == id)
    .Select(e => new EmploymentDto
    { 
        ID = e.EmploymentID,
        Docs = e.EmploymentDocuments.Select(o => o.FileName)
    })
    .SingleOrDefaultAsync();