Вот мои модели
[Table(name: "hListasAbastecimento")]
public class ListaAbastecimento
{
public ListaAbastecimento()
{
DataCriacao = DateTime.Now;
}
public ListaAbastecimento(string uap, int colaboradorId)
{
UAP = uap;
ColaboradorId = colaboradorId;
DataCriacao = DateTime.Now;
}
public int Id { get; set; }
public int ColaboradorId { get; set; }
[ForeignKey("ColaboradorId")]
public virtual Colaborador Colaborador { get; set; }
public string UAP { get; set; }
public DateTime DataCriacao { get; set; }
public virtual ICollection<ReferenciaAbastecimento> Referencias { get; set; }
}
[Table(name: "hReferenciasAbastecimento")]
public class ReferenciaAbastecimento
{
public int Id { get; set; }
[MaxLength(15)]
public string Referencia { get; set; }
public int? QtdAbastecimento { get; set; }
public int? QtdCaixas { get; set; }
public int? QtdPecasPorCaixa { get; set; }
public int ListaAbastecimentoId { get; set; }
[ForeignKey("ListaAbastecimentoId")]
public ListaAbastecimento ListaAbastecimento { get; set; }
}
вот вызов ajax
$.ajax({
url: "/Account/Abastecimentos/Index?handler=Abastecimentos",
type: "GET",
success: function (response) {
alert('success');
},
error: function (response) {
alert('error');
}
});
а вот метод страницы
public async Task<IActionResult> OnGetAbastecimentosAsync()
{
var abastecimentosList = await _context.ListasAbastecimento
.Include(la => la.Referencias)
.ToListAsync();
return new JsonResult(abastecimentosList);
}
Мне удалось выяснить, что ошибка произошла от включения Referencias, что означает, что если я делаю это, это работает
public async Task<IActionResult> OnGetAbastecimentosAsync()
{
var abastecimentosList = await _context.ListasAbastecimento
.ToListAsync();
return new JsonResult(abastecimentosList);
}
Сначала я подумал, что на модели не работает виртуальная причина, но я попытался удалить, но ошибка все-таки произошла.
Я могу хорошо выполнить запрос в SQL с помощью простого выбора и соединения, и я могу получить все данные ...
UPDATE
ОК, почему-то это не дает мне исключения. Обычно это показывало бы исключение на стороне сервера о исключении циклической ссылки при загрузке определенных объектов непосредственно из контекста в JSON. кроме этого времени единственное, что он мне показал, это незавершенный JSON.
Я закончил сопоставление для просмотра модели, чтобы избежать проблемы круговой ссылки свойств навигации
try
{
var abastecimentosList = await _context.ListasAbastecimento
.Include(la => la.Colaborador)
.Include(la => la.Referencias)
.ToListAsync();
var list = _mapper.Map<List<ListaAbastecimento>, List<ListaAbastecimentoViewModel>>(abastecimentosList);
return new JsonResult(list);
}
catch(Exception ex)
{
return NotFound();
}
теперь запускается функция успеха ajax. Таким образом, в основном проблема заключается в том, что исключение не было вызвано, кроме возврата плохого JSON.