Возврат родительской сущности вместе с ее дочерними сущностями с использованием синтаксиса метода LINQ - PullRequest
0 голосов
/ 26 февраля 2020

NET Базовый проект веб-API, и есть один метод Get action, который возвращает сущность (Keyfield) при передаче идентификатора. Я хотел бы изменить этот метод так, чтобы он возвращал ту же сущность, но теперь вместе со своими дочерними сущностями (Referencefields). Как я могу получить это в рамках одного и того же вызова базы данных, используя синтаксис метода LINQ внутри этого метода Get?

Мой метод get:

[HttpGet("{id}")]
public async Task<ActionResult<KeyField>> GetKeyField(int id)
{
   var keyField = await _context.KeyFields.FindAsync(id);

   if (keyField == null)
   {
            return NotFound();
   }

   return keyField;
}

Мои два класса:

public class KeyField
{
    public int KeyFieldId { get; set; }
    public string KeyName { get; set; }
    public string ShortDesc { get; set; }

    public List<ReferenceField> ReferenceFields { get; set; }

Дочерняя сущность:

public class ReferenceField
{
    public int ReferenceFieldId { get; set; }
    public int KeyFieldId { get; set; }
    public virtual KeyField KeyField { get; set; }

    public string FieldName { get; set; }
    public string Instructions { get; set; }
}

1 Ответ

0 голосов
/ 26 февраля 2020

Использование Стремительная загрузка

[HttpGet("{id}")]
public async Task<ActionResult<KeyField>> GetKeyField(int id)
{
   var keyField = await _context.Set<KeyField>()
                         .Where(x => x.KeyFieldId == id)
                         .Include(x => x.ReferenceFields)
                         .FirstOrDefaultAsync();

   if (keyField == null)
   {
            return NotFound();
   }

   return keyField;
}

Или включение Ленивая загрузка в качестве другого варианта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...