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

3
我正在使用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
我会编辑您的问题,以使其更清楚您在询问什么。正如您从答案中看到的那样,他认为您只想要文件名属性。 - dinotom
可能是使用LINQ排除选择中的列的重复问题 - Michael Freidgeim
1个回答

3

通过手动选择所需的所有数据,并将其存储在某个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();

虽然这个答案并不完全是我想要的解决方案,但 Dto 是我需要的概念。我的解决方案需要的不仅仅是文件名,所以我将 Docs 更改为以下内容:Docs = e.EmploymentDocuments.Select(o => new EmploymentBinary { BinaryFileID = o.BinaryFileID, FileName = o.FileName })。 - defect833

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接