如何在EF中使用继承时包含属性?

时间:2014-10-29 23:18:21

标签: c# entity-framework foreign-keys entity-framework-6

我正在尝试在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的属性。

1 个答案:

答案 0 :(得分:1)

您可以使用OfType方法

获取派生对象
var job = _dbContext.Jobs.OrderBy(x => x.ScheduledTime)
                         .OfType<InstallationJob >
                         .FirstOrDefault();