Как получить данные из связанной таблицы с ядром EF? - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над веб-проектом, я создал отношения «один ко многим» с подходом «сначала код» между моделью машины и экспериментальной модельюВот код:

   public class Experiment
{

    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime CreationDateTime { get; set; }
    public string Path { get; set; }
    public string Description { get; set; }

    [ForeignKey("Machine")]
    public int MachineId { get; set; }
    public Machine Machine { get; set; }
}


 public class Machine
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
    public string Description { get; set; }

    public ICollection<Experiment> Experiments { get; set; }
}

Я могу взять все фильтры экспериментов по userId:

  public async Task<IList<Experiment>> GetExperimentsAsync(int userId)
    {
        var experiments = await _experimentsDbContext.Experiments
                                .Where(x => x.UserId == userId)
                                .ToListAsync();

        return experiments; 
    }

Но я получаю machine = null, что мне нужно сделать, это получить списокЭксперименты фильтруют по userId и включают связанный машинный объект, но я не могу этого сделать.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вам нужно явно указать, что вы хотите загрузить связанные данные, используя метод .Include ().

Пожалуйста, ознакомьтесь с документацией MS

Пример:

public async Task<IList<Experiment>> GetExperimentsAsync(int userId)
{
    var experiments = await _experimentsDbContext.Experiments
                            .Where(x => x.UserId == userId)
                            .Include(e => e.Machine)
                            .ToListAsync();

    return experiments; 
}
0 голосов
/ 06 февраля 2019

Попробуйте следующий код:

public async Task<IList<Experiment>> GetExperimentsAsync(int userId)
{
    var experiments = await _experimentsDbContext.Experiments
                            .Include(experiment => experiment.Machine)
                            .Where(x => x.UserId == userId)
                            .ToListAsync();
    return experiments; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...