Entity framework 如何访问实体框架CTP4中的子属性?

Entity framework 如何访问实体框架CTP4中的子属性?,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,我对实体框架相当陌生,但给出一个简单的对象如下: public class Country { public string Name { get; set; } [Key] public string Code { get; set; } public bool IsPostalCodeRequired { get; set; } public ICollection<Province> Provinces { get; set; } }

我对实体框架相当陌生,但给出一个简单的对象如下:

public class Country
{
    public string Name { get; set; }

    [Key]
    public string Code { get; set; }

    public bool IsPostalCodeRequired { get; set; }

    public ICollection<Province> Provinces { get; set; }
}
公共类国家
{
公共字符串名称{get;set;}
[关键]
公共字符串代码{get;set;}
公共bool IsPostalCodeRequired{get;set;}
公共ICollection省{get;set;}
}
DbContext返回的属性为null。如果我在linq语句中使用Include方法来包含省,那么它就可以工作。但我想知道,当我实际访问该属性时,是否有办法加载它们?我知道这里需要考虑性能问题,但我只想知道如何做到这一点

谢谢

  • 确保
    ObjectContext.ContextOptions.LazyLoadingEnabled
    为true。这是新项目的默认设置
  • 如果使用纯POCO实体,延迟加载将无法工作(仔细想想)。因此,您可以使用POCO代理。同样,这是默认设置,但要使延迟加载与POCO代理一起工作,需要将所有关系属性声明为
    virtual
    ,而您的属性则不是

  • 克雷格说了这一切。只是想说默认情况下ObjectContext已关闭LazyLoading。尽管在创建新的.net 4.0项目时,模型设计器会显式地为u for.net 4.0项目启用它。关闭它是因为当惰性加载不可用时,EF需要保留.NET3.5的遗留行为。但是,正如您可能注意到的,您使用的是Dbcontext,它是新的,不依赖于.NET3.5。因此,默认情况下将启用懒散加载,以提供无缝体验