Я пытаюсь получить основную таблицу с 3 массивами значений, и она не работает вообще.Я понятия не имею, как я могу это исправить, я использую по умолчанию получить на контроллере:
public IEnumerable<SelfAssessment> GetSelfAssessment()
{
return _context.SelfAssessment;
}
что я пытаюсь получить по запросу:
{
"userEmail": "user@email.com",
"createdAt": "2018-12-10T08:02:16.117",
"update": false,
"discomfort": [
{
"bodyPartId": 1,
"intensityId": 1,
"frequencyId": 1
}
],
"saanswers": [
{
"answerId": 1
}
],
"sapostures": [
{
"postureAnswerId": 1,
"postureId": 1,
}
]
}
И я получаюэто Json, но с пустыми массивами, как показано ниже:
{
"userEmail": "user@mail.com",
"createdAt": "2018-12-10T08:02:16.117",
"update": false,
"discomfort": [],
"saanswers": [],
"sapostures": []
}
Это мой контроллер ниже:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using ErgoSAFE_API.Models;
namespace ErgoSAFE_API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SelfAssessmentsController : ControllerBase
{
private readonly ErgoSAFEContext _context;
public SelfAssessmentsController(ErgoSAFEContext context)
{
_context = context;
}
// GET: api/SelfAssessments
[HttpGet]
public IEnumerable<SelfAssessment> GetSelfAssessment()
{
return _context.SelfAssessment;
}
// GET: api/SelfAssessments/5
[HttpGet("{id}")]
public async Task<IActionResult> GetSelfAssessment([FromRoute] int id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var selfAssessment = await _context.SelfAssessment.FindAsync(id);
if (selfAssessment == null)
{
return NotFound();
}
return Ok(selfAssessment);
}
// PUT: api/SelfAssessments/5
[HttpPut("{id}")]
public async Task<IActionResult> PutSelfAssessment([FromRoute] int id, [FromBody] SelfAssessment selfAssessment)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != selfAssessment.SelfAssessmentId)
{
return BadRequest();
}
_context.Entry(selfAssessment).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!SelfAssessmentExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/SelfAssessments
[HttpPost]
public async Task<IActionResult> PostSelfAssessment([FromBody] SelfAssessment selfAssessment)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_context.SelfAssessment.Add(selfAssessment);
await _context.SaveChangesAsync();
return CreatedAtAction("GetSelfAssessment", new { id = selfAssessment.SelfAssessmentId }, selfAssessment);
}
// DELETE: api/SelfAssessments/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteSelfAssessment([FromRoute] int id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var selfAssessment = await _context.SelfAssessment.FindAsync(id);
if (selfAssessment == null)
{
return NotFound();
}
_context.SelfAssessment.Remove(selfAssessment);
await _context.SaveChangesAsync();
return Ok(selfAssessment);
}
private bool SelfAssessmentExists(int id)
{
return _context.SelfAssessment.Any(e => e.SelfAssessmentId == id);
}
}
}
.net core 2.1.403
Использование VSCode, а не VisualStudio
Редактировать 1:
public IEnumerable<Object> Find (int id) {
IQueryable<object> entryPoint = (from sa in _context.SelfAssessments
join a in _context.Answers on sa.SelfAssessmentId equals a.SelfAssessmentId
join q in _context.Questions on a.QuestionId equals q.QuestionId
where sa.SelfAssessmentId == id
select new {
SelfAssessmentID = sa.SelfAssessmentId,
Yearly = sa.Yearly,
Moved = sa.Moved,
CreatedAt = sa.CreatedAt,
Question = q.Description,
Value = a.Value
}).Take(10);
List<object> result = entryPoint.ToList();
return result;
}
Редактировать 2:
Я внес некоторые изменения в свой контроллер, когда я отлаживаю код, я вижу, что значение приходит, но при попытке вернуть результат ошибки нет.
Контроллер:
[HttpGet]
public IEnumerable<SelfAssessment> GetSelfAssessment()
{
var qry = from s in _context.SelfAssessment
select s;
var results = qry.Include("Discomfort").ToList();
results = qry.Include("Sapostures").ToList();
results = qry.Include("Saanswers").ToList();
return results;
}
Результаты Swagger:
Код
Недокументированное
Подробности Ошибка: ОК
Ответы
Код
200
Описание Успех