我有2个表IncomingCheck
和OutgoingCheck
,其中包含许多历史记录项目。为此,我使用了继承,并为传入和传出的历史记录继承了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
?