LINQ не возвращает никаких результатов, хотя они существуют в базе данных

У меня есть следующие два класса (упрощено для ясности):

public class Report
{
    public int Id { get; set; }
    public string Discriminator { get; set; }
    public int FileId { get; set; }
    public string AuthorId { get; set; }
    public string ReportPhase { get; set; }
}

а также

public class DailyObservationReport : Report
{
    public int DayOfTraining { get; set; }
    public DateTime DateOfTraining { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
}

Я добавил их в ApplicationDbContext следующим образом: public DbSet Report { get; задавать; }

общественности

public DbSet<Amber.Models.ReportingModels.DailyObservationReport>DailyObservationReport { get; set; }
public DbSet<Amber.Models.ReportingModels.Rating> Rating { get; set; }

Я успешно создал около 10 отчетов о тестировании в своей таблице, используя представление, поэтому я знаю, что есть записи, которые должны быть возвращены в запросе LINQ. Насколько я понимаю, поскольку у меня есть столбец дискриминатора, этот запрос LINQ должен возвращать все DailyObservationReports в контексте

var test2 = from r in _context.DailyObservationReport
                        select r;

однако, это не так и не делает этот

var test = from r in _context.Report
                       where r.Discriminator.Equals("DailyObservationReport")
                       select r;

У кого-нибудь есть идеи, почему я не могу получить доступ к записям в моей базе данных?

1 ответ

Решение

Похоже, вы все еще тестируете и, возможно, просто проверяете свои запросы в отладчике. Если это так, то это может быть связано с отложенным выполнением IQueryable, из-за которого создается впечатление, что результатов нет. Попробуйте это и посмотрите, если test2 или же test все еще пусты.

var test2 = (from r in _context.DailyObservationReport
                        select r).ToArray();

или же

var test = (from r in _context.Report
                       where r.Discriminator.Equals("DailyObservationReport")
                       select r).ToArray();
Другие вопросы по тегам