Entity framework core 不将子属性加载到内存中

Entity framework core 不将子属性加载到内存中,entity-framework-core,Entity Framework Core,我在实体框架核心2.2上拥有以下实体: public class Post { public Int32 Id { get; set; } public string Type { get; set; } public virtual Collection<File> Files { get; set; } } public class File { public Int32 Id { get; set; } public Int32 PostId { get;

我在实体框架核心2.2上拥有以下实体:

public class Post {
  public Int32 Id { get; set; }
  public string Type { get; set; }
  public virtual Collection<File> Files { get; set; }
}

public class File {
  public Int32 Id { get; set; }
  public Int32 PostId { get; set; }
  public String Name { get; set; }
  public Byte[] Content { get; set; }
  public virtual Post Post { get; set; }
}
公共类职位{
公共Int32 Id{get;set;}
公共字符串类型{get;set;}
公共虚拟集合文件{get;set;}
}
公共类文件{
公共Int32 Id{get;set;}
public Int32 PostId{get;set;}
公共字符串名称{get;set;}
公共字节[]内容{get;set;}
公共虚拟Post{get;set;}
}
我需要在不将内容加载到内存的情况下获取帖子的文件ID和名称列表

  IQueryable<Post> posts = _context.Posts.AsNoTracking();

  posts = posts.Include(x => x.File);

  var files = await posts
    .Where(x => x.Type == "design")
    // Remaining Query
IQueryable posts=\u context.posts.AsNoTracking();
posts=posts.Include(x=>x.File);
var files=等待发布
其中(x=>x.Type==“设计”)
//剩余查询
我想在我使用Include的那一刻,文件就会被加载到内存中。没有

在不将帖子内容加载到内存的情况下,获取帖子文件ID和名称列表的正确方法是什么

我需要在不将内容加载到内存的情况下获取帖子的文件ID和名称列表

  IQueryable<Post> posts = _context.Posts.AsNoTracking();

  posts = posts.Include(x => x.File);

  var files = await posts
    .Where(x => x.Type == "design")
    // Remaining Query
在不将帖子内容加载到内存的情况下,获取帖子文件ID和名称列表的正确方法是什么

有一次你说你想得到一篇文章,然后说你想得到一个文章列表

因此,要获取带有文件的帖子(仅Id和名称),您可以按如下方式编写查询:

var post = await _context.Posts.Where(yourCondition).Select(p => new
                {
                   p.Id,
                   p.Type
                   Files = p.Files.Select(f => new {f.Id,f.Name}).ToList()
                }).FirstOrDefaultAsync();
var posts = await _context.Posts.Where(yourCondition).Select(p => new
                {
                   p.Id,
                   p.Type
                   Files = p.Files.Select(f => new {f.Id,f.Name}).ToList()
                }).ToListAsync();
要获取带有文件的帖子列表(仅Id和名称),您可以按如下方式编写查询:

var post = await _context.Posts.Where(yourCondition).Select(p => new
                {
                   p.Id,
                   p.Type
                   Files = p.Files.Select(f => new {f.Id,f.Name}).ToList()
                }).FirstOrDefaultAsync();
var posts = await _context.Posts.Where(yourCondition).Select(p => new
                {
                   p.Id,
                   p.Type
                   Files = p.Files.Select(f => new {f.Id,f.Name}).ToList()
                }).ToListAsync();
注意:如果您需要强类型,则可以按如下方式编写:

Post post = await _context.Posts.Where(yourCondition).Select(p => new Post
                    {
                       Id = p.Id,
                       Type = p.Type
                       Files = p.Files.Select(f => new File {f.Id,f.Name}).ToList()
                    }).FirstOrDefaultAsync();