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

时间:2010-08-04 18:36:50

标签: 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; }
}
由DbContext返回的

,省的属性为null。如果我在我的linq语句中使用Include方法来包含省,那么它是有效的。但我想知道当我实际访问该属性时是否有办法加载它们?我知道在这里考虑性能问题,但我只是想知道如何去做。

谢谢,

2 个答案:

答案 0 :(得分:1)

  1. 确保ObjectContext.ContextOptions.LazyLoadingEnabled为真。这是新项目的默认设置。
  2. 如果使用纯POCO实体,延迟加载不起作用(想一想)。所以你可以使用POCO代理。同样,这是默认设置,但是使用POCO代理进行延迟加载需要将所有关系属性声明为virtual,而不是。{/ li>

答案 1 :(得分:1)

克雷格说了这一切。只是想默认说ObjectContext已关闭LazyLoading。虽然在创建新的.net 4.0项目时,模型设计者明确地为.net 4.0项目启用它。它被关闭是因为当延迟加载不可用时,EF需要保留.net 3.5的遗留行为。但是,您可能会注意到您使用的是新的Dbcontext,并且不依赖于.net 3.5。因此,默认情况下将启用LazyLoading以提供无缝体验。