C# EF Core LINQ从包含的实体中排除列
我正在使用ASP.Net Core 2.0和实体框架,并试图将一个模型返回到包含Employment实体的页面,其中还包括EmploymentDocument实体的集合。对于后者,我不希望加载数据(byte[])列,但我希望加载所有其他列,最重要的是FileName 我使用的linq查询加载包括数据列在内的所有内容:C# EF Core LINQ从包含的实体中排除列,c#,entity-framework,linq,asp.net-core,ef-core-2.0,C#,Entity Framework,Linq,Asp.net Core,Ef Core 2.0,我正在使用ASP.Net Core 2.0和实体框架,并试图将一个模型返回到包含Employment实体的页面,其中还包括EmploymentDocument实体的集合。对于后者,我不希望加载数据(byte[])列,但我希望加载所有其他列,最重要的是FileName 我使用的linq查询加载包括数据列在内的所有内容: var employment = await _context.Employment .Include(e => e.EmploymentDocuments) //
var employment = await _context.Employment
.Include(e => e.EmploymentDocuments) // will load all associated document data
.SingleOrDefaultAsync(m => m.EmploymentID == id);
此处的目的是能够在页面上显示所有文档名称的列表,并带有链接,这些链接可用于下载所选文件的数据。手动选择所需的所有数据,并将其存储在某些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=e.EmploymentDocuments.Select(o=>newemploymentbinary{BinaryFileID=o.BinaryFileID,FileName=o.FileName})