【发布时间】:2018-07-01 17:44:05
【问题描述】:
我有以下两个类(为清楚起见进行了简化):
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 中,如下所示: 公共 DbSet 报告 { 获取;放; }
公开
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;
有人知道为什么我无法访问数据库中的记录吗?
【问题讨论】:
-
你确定你使用了正确的连接字符串吗?
-
@DavidG 我在这个项目中只有一个连接字符串,我可以使用这个控制器将记录插入数据库,所以我不认为这是一个连接字符串问题
-
你有多确定?如果您没有遇到异常,那么这应该可以正常工作,这会使连接字符串成为最有可能的嫌疑人。
-
@DavidG 99% 确定。我只有一个连接字符串。它在 appsettings.json 文件中列为 DefaultConnection。所以除非我无意中覆盖了那个连接字符串(不知道我会怎么做),我很确定这不是问题。
-
没问题 :) 我已经尝试了您的更新模型(EFC 2.0.1),它按预期工作。
_context.DailyObservationReport.ToList()和_context.Report.OfType<DailyObservationReport>().ToList()都执行类似select ... from Report where Discriminator = 'DailyObservationReport'的操作。
标签: c# asp.net-mvc asp.net-core-mvc entity-framework-core