我正在尝试使用ASP.NET vNext / Entity Framework 7。
如果我有两个班级:A和B,其中一个A连接到很多" B'"实体框架不生成任何代理集合或代理类。因此,在尝试访问集合属性时,除非我手动添加到集合,否则它始终为空。如何在EF7中实现懒惰(甚至是热切)加载的集合?
public class A {
public Guid UniqueId {get;set;}
private ICollection<B> _backing;
public virtual ICollection<B> OneToManyRelationship {
get { return _backing ?? (_backing = new Collection<B>()); }
set { _backing = value; } }
}
public class B {
public A Owner {get;set;}
public string UniqueIdentifier {get;set;}
public int SomeImportantData {get;set;}
}
答案 0 :(得分:1)
EF 7 does not support lazy loading首次发布时。
这方面的一个例子是延迟加载支持,我们知道这对于许多开发人员来说是一个关键特性,但同时有许多应用程序可以在没有此功能的情况下开发。我们将拥有稳定的代码库并确信我们的核心组件具有正确的因子,而不是让每个人都等到它实现之后。要明确的是,并不是我们计划从EF7中删除延迟加载支持,只是有些应用程序可以在实现延迟加载之前开始利用EF7的优势。
虽然我尚未迁移到EF 7,但您应该能够急切地加载对象图,例如
using System.Data.Entity;
...
var query = ctx.A.Include(a => a.OneToManyRelationship);