【问题标题】:EF Core LINQ exclude column from included entityEF Core LINQ 从包含的实体中排除列
【发布时间】:2017-11-15 06:13:54
【问题描述】:

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

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

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

此处的目的是能够在页面上显示所有文档名称的列表,并带有链接,然后可用于下载所选文件的数据。

【问题讨论】:

  • I️ 会编辑您的问题,以便更清楚地了解您的要求。正如您从一个答案中看到的那样,他认为您只需要 Filename 属性

标签: c# entity-framework linq asp.net-core ef-core-2.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();

【讨论】:

  • 虽然这个答案并不完全是我所追求的解决方案,但 Dto 是我需要的概念。我的解决方案不仅需要 FileName,因此我将 Docs 更改为以下内容: Docs = e.EmploymentDocuments.Select(o => new EmploymentBinary { BinaryFileID = o.BinaryFileID, FileName = o.FileName })
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 2018-04-05
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多