将一对多地图同时映射到2个表

时间:2019-04-05 12:02:00

标签: c# .net sql-server entity-framework ef-code-first

我有2个表IncomingCheckOutgoingCheck,其中包含许多历史记录项目。为此,我使用了继承,并为传入和传出的历史记录继承​​了2个类。

public class IncomingCheck
{
    [Key]
    public int Id { get; set; }
    public virtual IList<IncomingCheckHistory> History { get; set; }
    //... other stuff
}

public class OutgoingCheck
{
    [Key]
    public int Id { get; set; }
    public virtual IList<OutgoingCheckHistory> History { get; set; }
    //... other stuff
}

public class CheckHistory
{
    [Key]
    public int Id { get; set; }
    //... other stuff
}

public class IncomingCheckHistory : CheckHistory
{
    public IncomingCheck IncomingCheck { get; set; }
}

public class OutgoingCheckHistory : CheckHistory
{
    public OutgoingCheck OutgoingCheck { get; set; }
}

这种方法非常有效。在我的数据库中,我有一个名为CheckHistories的表,其中有2个可空列,分别名为[IncomingCheck_Id][OutgoingCheck_Id]

现在,我已经在Sql Server Management Studio中创建的IncomingCheck上创建了一个视图,并且可以使用EF获取其数据:

public class ViewIncomingCheck
{
    [Key]
    public int Id { get; set; }
    public virtual IList<IncomingCheckHistory> History { get; set; }
    //... other stuff
}

到目前为止很好,但是现在我希望Entity Framework自动加载History项,但是当我尝试加载数据时,出现以下错误:

SqlException: Invalid column name 'ViewIncomingCheck_Id'. Invalid column name 'ViewIncomingCheck_Id'.

我的猜测是,EF正在ViewIncomingCheck_Id表中查找名为IncomingCheckHistory的列,但找不到它。

是否可以告诉EF应该使用IncomingCheck_Id而不是ViewIncomingCheck_Id

0 个答案:

没有答案