我的 ASP.NET Web API 应用程序在返回数据时遇到一些问题。我有 2 个模型,省到区作为一对多关系。我按照Microsoft 网站的教程使用预加载这是我的Province.cs模型[Table("province")]public class Province{ [Key] [Column("id")] public int Id { get; set; } [Column("displayName")] public string DisplayName { get; set; } [Column("code")] [StringLength(10)] public string Code { get; set; } // FKs public virtual ICollection<District> Districts { get; set; }}我的District.cs模特[Table("district")]public class District{ [Key] [Column("id")] public int Id { get; set; } [Column("displayName")] public string DisplayName { get; set; } [Column("prefix")] public string Prefix { get; set; } [Column("provinceId")] public int ProvinceId { get; set; } // FKs public virtual Province Province { get; set; }}在我LocationController.cspublic async Task<ActionResult<IEnumerable<Province>>> GetProvince([FromQuery] Province _province){ // Eager Loading return await _context.province.Include(p => p.Districts).Where(p => p.Id == _province.Id).ToListAsync();}当我打电话https://localhost:44346/api/province?id=1或使用id我的数据库中存在的任何内容时。Postman 和我所有的浏览器(MS Edge、Chrome...)都只返回 JSONArray 的一部分。看起来像这样:[ { "id": 1, "displayName": "Hồ Chí Minh", "code": "SG", "districts": [ { "id": 1, "displayName": "Bình Chánh", "prefix": "Huyện", "provinceId": 1就是这样。只有11行数据。它甚至与 JSON 格式不匹配。我的预期回报必须是:[ { "id": 1, "displayName": "Hồ Chí Minh", "code": "SG", "districts": [ { "id": 1, "displayName": "Bình Chánh", "prefix": "Huyện", "provinceId": 1 }, { ... },... },...]或者至少是正确的 JSON 格式。我之前的 2 个 API 可以很好地获取每个表的所有数据。我在这里缺少什么?谢谢。
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
您应该创建一个模型并返回它而不是您的实体。
这是由于自引用循环而发生的。
如果您正在使用Newtonsoft.Json
可以在startup.cs中忽略它
services.AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; })
- 1 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消