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

C# 在EF中使用继承时如何包含属性?,c#,entity-framework,foreign-keys,entity-framework-6,C#,Entity Framework,Foreign Keys,Entity Framework 6,我正在尝试在EF中使用继承,并提出了以下(简化的): 我的dbcontext具有以下特性: public DbSet<Job> Jobs { get; set; } 这会让你得到一份工作!但是,当我将作业强制转换为正确的作业类型(本例中为InstallationJob)时,它没有与Site属性相关的任何信息。(因为我没有包括在内) 但是,既然乔布斯是一个通用的表格,我该如何把它包括进去呢 当作业为childtype X时,我希望包含X的属性,当作业为Y时,我希望包含Y的属性。您可以

我正在尝试在EF中使用继承,并提出了以下(简化的):

我的dbcontext具有以下特性:

public DbSet<Job> Jobs { get; set; }
这会让你得到一份工作!但是,当我将作业强制转换为正确的作业类型(本例中为InstallationJob)时,它没有与Site属性相关的任何信息。(因为我没有包括在内)

但是,既然乔布斯是一个通用的表格,我该如何把它包括进去呢


当作业为childtype X时,我希望包含X的属性,当作业为Y时,我希望包含Y的属性。

您可以使用类型的
方法获取派生对象

var job = _dbContext.Jobs.OrderBy(x => x.ScheduledTime)
                         .OfType<InstallationJob >
                         .FirstOrDefault();
var job=\u dbContext.Jobs.OrderBy(x=>x.ScheduledTime)
.字体
.FirstOrDefault();

我将把答案留给更有经验的人来回答,因为我认为表的权限是默认的(你是先编写代码的,对吗?),应该用你所拥有的(基于:)来实现。当然,你可以用dbSet来解决它,并移到表的每种类型方法,但它应该默认为前者?我明白了。但是有一个问题:如果我想得到所有作业中最早的预定时间的作业(不管作业类型),然后将最早的作业转换为它的特定类型,该怎么办?嗨,Jen,如果这是另一个问题,那么创建一个新问题,这样我或其他人可以帮助你。是的,你可以尝试将其转换为特定类型,因为这个最早的工作可以是任何类型的。
var job = _dbContext.Jobs.OrderBy(x => x.ScheduledTime).FirstOrDefault();
//logic to find out which job time was retrieved and then get the specific information
var job = _dbContext.Jobs.OrderBy(x => x.ScheduledTime)
                         .OfType<InstallationJob >
                         .FirstOrDefault();