У меня есть проект. Net Core 3.0 Web API, и я использую Entity Framework в качестве ORM. У меня есть самоссылающаяся сущность, которая выглядит следующим образом:
public partial class Category
{
public Category()
{
Events = new HashSet<Event>();
InverseParentCategory = new HashSet<Category>();
}
public int Id { get; set; }
public string Name { get; set; }
public int? ParentCategoryId { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual ICollection<Event> Events { get; set; }
public virtual ICollection<Category> InverseParentCategory { get; set; }
}
И это метод действия в моем CategoriesController
, который возвращает все категории в виде JSON объекта:
[HttpGet]
public async Task<IActionResult> GetAllCategories()
{
var allCategories = await _categoryService.GetCategories();
return Ok(allCategories);
}
И это мой GetCategories
метод в моем CategoryService
:
public async Task<IEnumerable<Category>> GetCategories()
{
var allCategories = await _context.Categories.ToListAsync();
return allCategories;
}
Ответ, который я получаю через Почтальон, таков:
[
{
"id": 1,
"name": "Soccer",
"parentCategoryId": null,
"parentCategory": null,
"events": [],
"inverseParentCategory": [
{
"id": 3,
"name": "Basketbal",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 4,
"name": "Volleyball",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 5,
"name": "",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 6,
"name": "dada",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
}
]
},
{
"id": 2,
"name": "Basketbal",
"parentCategoryId": null,
"parentCategory": null,
"events": [],
"inverseParentCategory": []
},
{
"id": 3,
"name": "Basketbal",
"parentCategoryId": 1,
"parentCategory": {
"id": 1,
"name": "Soccer",
"parentCategoryId": null,
"parentCategory": null,
"events": [],
"inverseParentCategory": [
{
"id": 4,
"name": "Volleyball",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 5,
"name": "",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 6,
"name": "dada",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
}
]
},
"events": [],
"inverseParentCategory": []
},
{
"id": 4,
"name": "Volleyball",
"parentCategoryId": 1,
"parentCategory": {
"id": 1,
"name": "Soccer",
"parentCategoryId": null,
"parentCategory": null,
"events": [],
"inverseParentCategory": [
{
"id": 3,
"name": "Basketbal",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 5,
"name": "",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 6,
"name": "dada",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
}
]
},
"events": [],
"inverseParentCategory": []
},
{
"id": 5,
"name": "",
"parentCategoryId": 1,
"parentCategory": {
"id": 1,
"name": "Soccer",
"parentCategoryId": null,
"parentCategory": null,
"events": [],
"inverseParentCategory": [
{
"id": 3,
"name": "Basketbal",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 4,
"name": "Volleyball",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 6,
"name": "dada",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
}
]
},
"events": [],
"inverseParentCategory": []
},
{
"id": 6,
"name": "dada",
"parentCategoryId": 1,
"parentCategory": {
"id": 1,
"name": "Soccer",
"parentCategoryId": null,
"parentCategory": null,
"events": [],
"inverseParentCategory": [
{
"id": 3,
"name": "Basketbal",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 4,
"name": "Volleyball",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
},
{
"id": 5,
"name": "",
"parentCategoryId": 1,
"events": [],
"inverseParentCategory": []
}
]
},
"events": [],
"inverseParentCategory": []
}
]
Так что вы можете видеть, что когда у ребенка есть родитель, он возвращает данные родителя и его детей. Я хочу избежать этого, но я не могу думать ни о чем. Могу ли я получить какую-либо помощь?