Создание вложенных данных из JSON с использованием. net core Entity Framework - PullRequest
0 голосов
/ 11 марта 2020

Я не хочу создавать «Группу», используя запрос HTTP POST. Пользователь не существует, поэтому его также следует создать. Но "элемент" в полученной Почтой всегда нулевой. Когда я не публикую пользователя или пустой массив пользователей, он работает.

Вот моя модель:

public class User
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public virtual Group Group { get; set; }
}

public class Group
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public virtual List<User> Users { get; set; }
}

И метод публикации:

// POST api/<controller>
[HttpPost]
[ProducesResponseType(typeof(Group), StatusCodes.Status200OK)]
public async Task<IActionResult> Post([FromBody] Group item)
{
    EntityEntry<Group> entityEntry = this._launcherContext.Database.Add(item);
    this._launcherContext.Database.SaveChanges();

    return Ok(entityEntry.Entity);
}

И хотя бы json тело:

{
  "name": "TestGroup",
  "users": [
    {
      "name": "Threepwood, Guybrush"
    }
  ]
}

1 Ответ

0 голосов
/ 11 марта 2020

Если вы хотите создать группу без пользователя, создайте класс GroupPost.

public class GroupPost
{
    public GroupPost(){
    Users = new List<UserPost>();
    }
    public string Name { get; set; }
    public List<UserPost> Users { get; set; }
}
public class UserPost
{
    public string Name { get; set; }

}    

[HttpPost]
[ProducesResponseType(typeof(Group), StatusCodes.Status200OK)]
public async Task<IActionResult> Post([FromBody] GroupPost item)
{
    Group newItem = new Group
    {
     Name=item.Name,         
    };
    foreach(var user in item.Users){
    User newUser = new User{
    Name=user.Name
    };
    newItem.Add(newUser);
    }
    EntityEntry<Group> entityEntry = this._launcherContext.Database.Add(newItem);
    this._launcherContext.Database.SaveChanges();

    return Ok(entityEntry.Entity);
}

Затем вы можете опубликовать свои данные без списка пользователей

...