【发布时间】:2014-03-07 02:48:52
【问题描述】:
我有 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 始终为空。
假设
由于A实体中没有导航属性引用B,因此实体框架在检索B时不会延迟加载A。
期待
因为我不需要从A 访问B,所以我想去掉A 中的导航属性但仍然保留从B 延迟加载A 的能力。
注意
我看到了来自 Map Many to Many relationship without navigation property 的帖子,但这不适合我的情况。
无论如何我可以在不使用显式包含var b = context.B.Include(x => x.InstanceOfClassA); 的情况下强制从B 延迟加载A?也许是自定义约定
编辑 1
我尝试使用以下约定,但仍然没有运气:
modelbuilder.Entity<B>()
.HasRequired<A>(x => x.InstanceOfClassA);
【问题讨论】:
-
如果你对我的问题投反对票,请花点时间评论我做错了什么。
-
我看不出这个问题有什么问题。我花了一些时间研究同样的事情,这样我就不必在从服务发送的所有内容上包含()。我想我最终在加载导航属性的部分类中创建了一个构造函数。不知道这是否适合你。
-
我也想手动加载依赖。但仍在寻找可以在未来项目中重新使用的解决方案。例如自定义约定,但我不知道如何为这种关系实现自定义约定
标签: c# ef-code-first entity-framework-6