【发布时间】:2021-11-06 08:43:55
【问题描述】:
我有那些模型(实体类商店 ID)
public class TeachingProgramme : Entity
{
[Required]
[MaxLength(100)]
public string Name { get; set; }
public virtual ICollection<TeachingProgrammeFile> TeachingProgrammeFiles { get; set; }
}
public class TeachingProgrammeFile : Entity
{
[Required]
public byte[] Content { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; }
[Required]
public int TeachingProgrammeId { get; set; }
[Required]
public TeachingProgrammeFileType FileType { get; set; }
public virtual TeachingProgramme TeachingProgramme { get; set; }
}
还有一项用于获取带有文件但没有文件数据的 TeachingProgramme 的服务 (TeachingProgrammeFile.Content):
db.TeachingProgramme teachingProgramme = await _context.TeachingProgrammes
.Include(x => x.TeachingProgrammeFiles)
.FirstOrDefaultAsync(x => x.Id == request.TeachingProgrammeId);
如何优化它以防止每次都从数据库中获取内容?它需要大量不必要的数据,因为我只需要 TeachingProgrammeFile Name 和 Id
【问题讨论】:
-
这不是
Include本身的东西;那只是JOIN;不要拉取你不想要的数据(写Select(.. props apart from Content here..)),所以它永远不会放入SELECT并且数据库永远不会发送它 -
您是否尝试在 LINQ 末尾添加扩展方法 Select?我认为它应该在数据库级别进行过滤。
-
您需要这些实体进行修改吗?还是开玩笑通过控制器返回?
-
@SvyatoslavDanyliv 进行修改。我尝试了这些选择,但它不起作用
-
那么你必须重新设计你的实体。并将内容移动到导航属性(其他表)。否则,您将坚持使用分离实体更新。
标签: c# .net-core entity-framework-core