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();