我有一个与ApplicationUser model相关的Post model class。当我急切地加载ApplicationUsers时,从控制器中加载所有数据。我不想加载用户密码。我只想给用户加载一些列数据。
ModeL类别:
public class Post
{
public int PostId { get; set; }
public string PostContent { get; set; }
public string ClientId { get; set; }
public ApplicationUser Client { get; set; }
}
控制器:
var Post = await _context.Post.Include(x=>x.Client).ToListAsync();
注意:我使用了.Net Core缩进。
感谢阅读。
我不相信你只能选择.Client
的一些属性。然而,您可以使用dto:
var PostDto = await _context.Post
//.Where
.Select( p => new PostDTo {
PostId,
PostContent,
Username = p.Client.UserName
})
.ToListAsync();
或
var PostDto = await _context.Post
//.Where
.Select( p => new PostDTO {
PostId,
PostContent,
User = new UserDTO
{
p.Client.UserName,
...
}
})
.ToListAsync();
请注意,通过使用DTO而不是公开表,您可以保证从不公开不需要的数据。