2010-08-04 39 views
0

我非常新的實體框架,但由於一個簡單的對象是這樣的:如何訪問實體框架CTP4中的子屬性?

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語句中使用包含方法來包含省份,那麼它就可以工作。但是我想知道在我實際訪問該屬性時是否有加載它們的方法?我知道這裏需要考慮性能方面的問題,但我只想知道如何去做。

感謝,

回答

1
  1. 確保ObjectContext.ContextOptions.LazyLoadingEnabled是真的。這是新項目的默認值。
  2. 如果使用純POCO實體,則延遲加載無法工作(考慮它)。所以你可以使用POCO代理。同樣,這是默認設置,但是使用POCO代理進行延遲加載需要所有關係屬性都聲明爲virtual,而您的屬性不是。
1

克雷格說了這一切。只是想默認說ObjectContext關閉了LazyLoading。儘管當您創建新的.net 4.0項目時,模型設計人員明確地將它打開爲.net 4.0項目。它關閉了,因爲EF需要保留.net 3.5的舊版行爲,當延遲加載不可用時。但是,您可能會注意到您正在使用新的Dbcontext,並且不依賴於.net 3.5。因此LazyLoading會默認啓用,以提供無縫的體驗。

+0

謝謝;澄清。 – 2010-08-06 13:51:20

相關問題