C# 查询父类EF继承linq查询

C# 查询父类EF继承linq查询,c#,sql,entity-framework,linq,inheritance,C#,Sql,Entity Framework,Linq,Inheritance,大家好,下面是我的基本EF类结构: public abstract class StandardEngineeredModel { [Key] public string ModelNumber { get; set; } public int VoltageInput { get; set; } } public class DualRatedInputEngineeredModel : StandardEngineeredModel { public int

大家好,下面是我的基本EF类结构:

public abstract class StandardEngineeredModel
{
    [Key]
    public string ModelNumber { get; set; }
    public int VoltageInput { get; set; }
}
public class DualRatedInputEngineeredModel : StandardEngineeredModel
{

    public int SinglePhaseVoltageInput { get; set; }
    public string SinglePhaseHzInput { get; set; }
    public decimal SinglePhaseAmpsInput { get; set; }
    public bool SeparateInput { get; set; }
}
以及我的背景:

public class LabelPrintingContext : DbContext
{
    public virtual DbSet<StandardEngineeredModel> StandardEngineeredModels { get; set; }
}
但是当执行此操作时,它会显示无效的列名SeparateInput,这似乎是因为从它继承的DualRatedInputEngineeredModel将额外的列添加到了我的StandardEngineeredModels表中。我不知道该怎么做,我不想返回Iqueryable,但不管我怎么做,它都告诉我SeparateInput是无效的列名

我还尝试先将其转换,但得到了相同的错误:

public StandardEngineeredModel GetEngineeredOrder(string modelNumber)
    {
        using (context = new LabelPrintingContext())
        {
            return (from s in context.StandardEngineeredModels.OfType<StandardEngineeredModel>()
                        where s.ModelNumber == modelNumber
                        select s).FirstOrDefault();

        }
    }
公共标准EngineeredModel GetEngineeredOrder(字符串型号)
{
使用(context=newLabelPrintingContext())
{
返回(来自context.StandardEngineeredModels.OfType()中的)
其中s.ModelNumber==ModelNumber
选择s).FirstOrDefault();
}
}
我需要做DTO什么的吗?我这样做完全错了吗


提前感谢您的任何意见/帮助

根据显示的代码,我看不到每个引用的
DualRatedInputEngineeredModel
,因此我看不出该错误是如何在该代码中发生的。这就是为什么我对出现这个错误感到困惑的原因。您是在为您的模式使用每个层次表还是每个具体表?TPH更容易映射到访问基本类型的数据库集,尽管使用TPC应该是可能的。听起来您可能需要TPC,其中DualRatedInputEngineeredModel有一个基表和一个单独的表,但是EF认为这将是TPH,所有子类都存储在一个带有鉴别器的表中。因为EF创建表的方式不同,输入在standardengineeredmodel表中,并且有一个鉴别器来确定我使用的模型。我使用TPH,没有办法只从表中提取基类属性吗?我更喜欢使用TPH,但如果它不能满足我的需要,我可以切换。
public StandardEngineeredModel GetEngineeredOrder(string modelNumber)
    {
        using (context = new LabelPrintingContext())
        {
            return (from s in context.StandardEngineeredModels.OfType<StandardEngineeredModel>()
                        where s.ModelNumber == modelNumber
                        select s).FirstOrDefault();

        }
    }