问题遇到的现象和发生背景
两个表 班级 学生 一对多 ,当我使用查找
查找出学生以及include 班级时 data里面就会有 学生信息-班级信息, 然后 班级信息里面又有学生信息 就这样一直无限循环, 返回json的时候就会错误,网上查找了一下 使用Microsoft.AspNetCore.Mvc.NewtonsoftJson 这个包,忽略循环 。但是json里面还是有点问题。以下是代码以及返回的值。
问题相关代码,请勿粘贴截图
学生表
public class Stu
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Stu_id { get; set; }
Display(Name = "姓名")]
public string Stu_name { get; set; }
[Display(Name = "性别")]
public string Stu_sex { get; set; }
[Display(Name = "年龄")]
public int Stu_age { get; set; }
public int StuClass_id { get; set; }
public Stuclass Stuclass { get; set; }
}
public class Stuclass
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Stuclass_id { get; set; }
public string Stuclass_name { get; set; }
public List<Stu> Stus { get; set; }
}
一对多关联
modelBuilder.Entity().HasOne(l => l.Stuclass).WithMany(l => l.Stus)
.HasForeignKey(l => l.StuClass_id);
运行结果及报错内容
测试
public async Task Ceshi()
{
var stu = await _context.Stus.Include(e=>e.Stuclass).ToListAsync();
return Json(stu);
}
json:
[
{
"stu_id": 1,
"stu_name": "张三",
"stu_sex": "男",
"stu_age": 16,
"stuClass_id": 1,
"stuclass": {
"stuclass_id": 1,
"stuclass_name": "网络一班",
"stus": [
{
"stu_id": 2,
"stu_name": "李四",
"stu_sex": "男",
"stu_age": 17,
"stuClass_id": 1
}
]
}
},
{
"stu_id": 2,
"stu_name": "李四",
"stu_sex": "男",
"stu_age": 17,
"stuClass_id": 1,
"stuclass": {
"stuclass_id": 1,
"stuclass_name": "网络一班",
"stus": [
{
"stu_id": 1,
"stu_name": "张三",
"stu_sex": "男",
"stu_age": 16,
"stuClass_id": 1
}
]
}
}
]
我的解答思路和尝试过的方法
其实可以新建一个model来赋值返回,有没有更好的办法呢?
我想要达到的结果
json:
[
{
"stu_id": 1,
"stu_name": "张三",
"stu_sex": "男",
"stu_age": 16,
"stuClass_id": 1,
"stuclass": {
"stuclass_id": 1,
"stuclass_name": "网络一班",
}
},
{
"stu_id": 2,
"stu_name": "李四",
"stu_sex": "男",
"stu_age": 17,
"stuClass_id": 1,
"stuclass": {
"stuclass_id": 1,
"stuclass_name": "网络一班",
}
}
]