LINQ虽然存在于数据库中但没有返回任何结果

时间:2018-01-23 01:06:44

标签: c# asp.net-mvc asp.net-core-mvc entity-framework-core

我有以下两个类(为简洁起见而简化):

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 个答案:

答案 0 :(得分:0)

看起来您仍在测试,可能只是在调试器中验证您的查询。如果是这种情况那么它可能只是由于IQueryable的延迟执行使得它看起来没有结果。试试这个,看看test2test是否仍为空。

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