这是我的模特
[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中很好地运行查询,并且可以获得所有数据...
更新
好的,出于某种原因,这不会给我一个例外。通常,当将某些实体直接从上下文加载到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之外没有触发异常。