有没有办法只加载ApplicationUser的某些列



我有一个与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而不是公开表,您可以保证从不公开不需要的数据。

相关内容

最新更新