Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core ManyToMany关系-以JSON格式下载数据_Asp.net Core_.net Core_Asp.net Core 2.0_Asp.net Core Webapi - Fatal编程技术网

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));
}