我正在尝试在EF中使用继承,并提出以下(简化):
public abstract class Job
{
public int Id { get; set; }
public DateTime ScheduledTime { get; set; }
}
[Table("InstallationJobs")]
public class InstallationJob : Job
{
public PbnSite Site { get; set; }
}
我的dbcontext有以下内容:
public DbSet<Job> Jobs { get; set; }
现在,我正试图获得一份随机工作(我之前插入的):
var job = _dbContext.Jobs.OrderBy(x => x.ScheduledTime).FirstOrDefault();
//logic to find out which job time was retrieved and then get the specific information
然后返回一份工作!但是,当我将作业转换为正确的作业类型(在此示例中为InstallationJob)时,它没有任何有关Site属性的信息。 (因为我没有把它包括在内)。
但是,如果将Jobs视为通用表格,我将如何将其包括在内?
当作业属于子类型X时,我想要包含X的属性,当它是Y时,我想要包含Y的属性。
答案 0 :(得分:1)
您可以使用OfType
方法
var job = _dbContext.Jobs.OrderBy(x => x.ScheduledTime)
.OfType<InstallationJob >
.FirstOrDefault();