Asp.net core ManyToMany关系-以JSON格式下载数据
我在表之间有很多关系:Asp.net core ManyToMany关系-以JSON格式下载数据,asp.net-core,.net-core,asp.net-core-2.0,asp.net-core-webapi,Asp.net Core,.net Core,Asp.net Core 2.0,Asp.net Core Webapi,我在表之间有很多关系: 使用者 标签 (一切都按照建议进行) 我想得到: [ { "id": 1, "username": "Bartek", "password": null, "userTags": [ // List of Tags ] 已编辑 目前我已经做了如下工作 [HttpGet] public IActionResult GetAll() { var users = _userService.Ge
- 使用者
- 标签
[
{
"id": 1,
"username": "Bartek",
"password": null,
"userTags": [ // List of Tags ]
已编辑
目前我已经做了如下工作
[HttpGet]
public IActionResult GetAll()
{
var users = _userService.GetAll();
List<UserDto> result = new List<UserDto>();
foreach (var user in users)
{
var tagDto = _mapper.Map<IList<TagDto>>(user.UserTags.Select(x => x.Tag));
var userDtos = new UserDto
{
Id = user.Id,
Username = user.Username,
Tags = tagDto
};
result.Add(userDtos);
}
return Ok(result);
}
[HttpGet]
public IActionResult GetAll()
{
var users=_userService.GetAll();
列表结果=新列表();
foreach(用户中的var用户)
{
var tagDto=_mapper.Map(user.UserTags.Select(x=>x.Tag));
var userDtos=新UserDto
{
Id=user.Id,
Username=user.Username,
Tags=tagDto
};
结果.添加(userDtos);
}
返回Ok(结果);
}
但是没有任何内置选项可以获得预期效果吗?我为这种情况构建了自己的映射器:
public class MyMapper
{
public IList<UserDto> GetUserDto(IEnumerable<User> users, IMapper _mapper)
{
List<UserDto> result = new List<UserDto>();
foreach (var user in users)
{
var tagDto = _mapper.Map<IList<TagDto>>(user.UserTags.Select(x => x.Tag));
var userDtos = new UserDto
{
Id = user.Id,
Username = user.Username,
Tags = tagDto
};
result.Add(userDtos);
}
return result;
}
}
只是一个想法,假设“一切都按照建议进行”
你应该换成这个
public IEnumerable<User> GetAll()
{
return _context.Users
.Include(a => a.UserTags.Tags.Select(c => c.tagname));
}
public IEnumerable GetAll()
{
return\u context.Users
.Include(a=>a.UserTags.Tags.Select(c=>c.tagname));
}
public class MyMapper
{
public IList<UserDto> GetUserDto(IEnumerable<User> users, IMapper _mapper)
{
List<UserDto> result = new List<UserDto>();
foreach (var user in users)
{
var tagDto = _mapper.Map<IList<TagDto>>(user.UserTags.Select(x => x.Tag));
var userDtos = new UserDto
{
Id = user.Id,
Username = user.Username,
Tags = tagDto
};
result.Add(userDtos);
}
return result;
}
}
private IMapper _mapper;
private MyMapper _myMapper;
public UsersController(IMapper mapper)
{
_mapper = mapper;
_curioMapper = new CurioMapper();
}
[HttpGet]
public IActionResult GetAll()
{
var users = _userService.GetAll();
var result = _myMapper.GetUserDto(users, _mapper);
return Ok(result);
}
public IEnumerable<User> GetAll()
{
return _context.Users
.Include(x => x.UserTags)
.ThenInclude(z => z.Tag);
}
[
{
"id": 1,
"username": "Bartek",
"password": null,
"userTags": [ // List of Tags ]
public IEnumerable<User> GetAll()
{
return _context.Users
.Include(a => a.UserTags.Tags.Select(c => c.tagname));
}