// POST /api/[controller] public virtual async Task <ActionResult <TViewModel> > Post(TKey parentId, [FromBody] TCreateModel body) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var parent = await Database.FindAsync <TParent>(parentId); if (parent == null) { return(NotFound()); } if (!await Permissions.AllowCreate(await CurrentUser, body)) { return(Forbid()); } var dataModel = await CreateDataModelAsync(parent, body); dataModel.Deleted = false; Database.Set <TData>().Add(dataModel); await Database.SaveChangesAsync(); return(CreatedAtAction("Get", new { parentId, id = dataModel.Id }, await CreateViewModelAsync(dataModel))); }