I have two models which are related like following:
public class Context
    {
        [Key]
        public long ContextId { get; set; }
        [Required]
        public string Role { get; set; }
        public ICollection<Connection> Connections { get; set; }
        public Context()
        {
        }
    }
And
public class Connection
    {
        [Key]
        public long ConnectionId { get; set; }
        public string Name { get; set; }
        public long ContextId { get; set; }
        public Context Context { get; set; }
        public Connection()
        {
        }
    }
I have a repository for Context:
public class ContextRepository: IContextRepository
{
    private readonly WebAPIDataContext _db;
    public ContextRepository(WebAPIDataContext db)
    {
        _db = db;
    }
    public Context CreateContext(Context context)
    {
        _db.Contexts.Add(context);
        _db.SaveChanges();
        return context;
    }
    public void DeleteContext(long id)
    {
        Context context = GetContext(id);
        if (context != null)
        {
            _db.Contexts.Remove(context);
            _db.SaveChanges();
        }
    }
    public List<Context> GetAllContexts()
    {
        return _db.Contexts
            .Include(context => context.Connections)
            .ToList();
    }
    public Context GetContext(long id)
    {
        return _db.Contexts.FirstOrDefault(o => o.ContextId == id);
    }
    public void UpdateContext(long id, Context context)
    {
        Context contextToUpdate = _db.Contexts.FirstOrDefault(o => o.ContextId == id);
        contextToUpdate.Role = context.Role;
        contextToUpdate.Connections = context.Connections;
        _db.Update(contextToUpdate);
        _db.SaveChanges();
    }
}
Swagger gives me skeleton like following:
{
  "contextId": 0,
  "role": "string",
  "connections": [
    {
      "connectionId": 0,
      "name": "string",
      "contextId": 0,
      "context": {}
    }
  ]
}
If I fill "Role":"Worker" and "name":"Max" and do POST or similar in PUT then it gives me error:
{
  "Connections[0].Context.Role": [
    "The Role field is required."
  ]
}
Why is it so? I want to be able to POST or PUT data even if I do not fill connections related fields. Right now I have controller only for Context.
UPDATE: Controller:
[Route("api/[controller]")]
public class ContextController : Controller
{
    private readonly IContextRepository _contexts;
    public ContextController(IContextRepository contexts)
    {
        _contexts = contexts;
    }
    [HttpGet("")]
    public IActionResult GetAllContexts()
    {
        try
        {
            List<Context> contexts = _contexts.GetAllContexts();
            return Ok(contexts);
        }
        catch (EntityNotFoundException<Context>)
        {
            return NotFound();
        }
    }
    [HttpGet("{id}")]
    public IActionResult GetContext(long id)
    {
        Context context= _contexts.GetContext(id);
        if (context == null)
        {
            return NotFound();
        }
        return Ok(context);
    }
    [HttpPost]
    public IActionResult CreateContext([FromBody] Context context)
    {
        if (ModelState.IsValid == false)
        {
            return BadRequest(ModelState);
        }
        Context createdContext= _contexts.CreateContext(context);
        if (createdContext== null)
        {
            return NotFound();
        }
        return CreatedAtAction(
             nameof(GetContext), new { id = createdContext.ContextId}, createdContext);
    }
    [HttpPut("{id}")]
    public IActionResult UpdateContext(long id, [FromBody] Context context)
    {
        if (ModelState.IsValid == false)
        {
            return BadRequest(ModelState);
        }
        try
        {
            _contexts.UpdateContext(id, context);
            return Ok();
        }
        catch (EntityNotFoundException<Context>)
        {
            return NotFound();
        }
    }
    [HttpDelete("{id}")]
    public IActionResult DeleteCOntext(long id)
    {
        _contexts.DeleteContext(id);
        return Ok();
    }
}
 
     
    