【问题标题】:Create nested data from JSON using .net core Entity Framework使用 .net core Entity Framework 从 JSON 创建嵌套数据
【发布时间】:2020-03-11 11:48:17
【问题描述】:

我不想使用 http POST 请求创建“组”。用户不存在,因此也应该创建它。 但是 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"
    }
  ]
}

【问题讨论】:

    标签: c# .net entity-framework .net-core entity-framework-core


    【解决方案1】:

    如果您想创建没有用户的组,请创建一个 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);
    }
    

    然后您可以在没有用户列表的情况下发布您的数据

    【讨论】:

    • 但我不想与用户创建一个组。我的示例仅在没有用户的情况下有效。还应该创建用户。
    • 好吧,我改变了答案。
    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 2020-03-23
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多