Entity framework core 不将子属性加载到内存中
我在实体框架核心2.2上拥有以下实体: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;
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();