我有2个表:A和B有一对多关系,这些表在EF 6中实现如下:
public class A
{
[Key]
public int AID {get;set;}
public string AName {get;set;}
}
public class B
{
[Key]
public int BID {get;set;}
public string BName {get;set;}
public int AID {get;set;}
[ForeignKey("AID")]
public A InstanceOfClassA {get;set;}
}
问题
当我从上下文中检索B
时,InstanceOfClassA
始终为空。
假设
因为没有导航属性,所以请参考B
实体中的A
,因此,在检索A
时,实体框架不会延迟加载B
。
期待
因为我不需要从B
访问A
,所以我想删除A
中的导航属性,但仍然保留延迟加载{{1}的能力来自A
。
注意
我看到了来自Map Many to Many relationship without navigation property的帖子,但这不符合我的情况。
我是否可以在不使用明确的包含B
的情况下强制从A
延迟加载B
?也许定制会议
编辑1
我尝试使用惯例如下,但仍然没有运气:
var b = context.B.Include(x => x.InstanceOfClassA);
答案 0 :(得分:1)
要使延迟加载工作,您必须使用virtual
关键字标记导航属性:
[ForeignKey("AID")]
public virtual A InstanceOfClassA {get;set;}