Я использую ASP. NET Core 3.1.2, Pomelo.EntityFramework 3.1.1 для связи с базой данных MySQL. Вот минимальный пример, демонстрирующий мою проблему.
Определены два класса модели. Модель Field
включает несколько зон:
public class Field
{
[Key]
public int Id { get; set; }
public virtual ICollection<Zone> Zones { get; set; }
public Field()
{
Zones = new HashSet<Zone>();
}
}
public class Zone
{
[Key]
public int Id { get; set; }
public int FieldId { get; set; }
public virtual Field Field { get; set; }
}
Затем создается API для получения данных для зоны.
[Route("api/field/{field}/zone/{id}")]
[HttpGet]
public async Task<ActionResult<List<Field>>> GetZone(
[FromRoute] int field,
[FromRoute] int id)
{
Zone Zone = await _context.Zone
.Where(m => m.FieldId == field && m.Id == id)
.SingleOrDefaultAsync();
return Ok(_context.Field);
}
В демонстрационном коде я ожидаю вернуть список Field
без Zone
. Однако результаты включают содержимое для Zone
равно id
при вызове /api/field/16/zone/15
.
[
{
"zone": [],
"id": 7
},
{
"zone": [
{
"id": 15
}
],
"id": 16
}
]
Кажется, что содержимое сохраняется, если дочерний элемент вызывается в другом месте. Я бы не хотел возвращать ребенка. Есть предложения?