1
我先使用EF 4.1代碼。我有一個用戶模型和一個設置模型。
每次存儲庫返回用戶時,設置也會被加載。我將設置標記爲虛擬,我的所有訪問修飾符都是公共的LazyLoadingEnabled和ProxyCreationEnabled默認啓用。
我錯過了什麼?爲什麼我的EF系列不是懶惰?
public class User : BaseEntity
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public virtual ICollection<Setting> Settings { get; set; }
}
public class Setting
{
public int UserID { get; set; }
public int SettingID { get; set; }
public string Value { get; set; }
}
用戶可能有幾個設置,所以在設置中與外鍵存在一對多的關係。
用戶配置
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
HasKey(u => u.ID);
HasMany(u => u.Settings).WithOptional().HasForeignKey(u => u.UserID);
}
}
以及設置配置爲:
public class SettingsConfiguration : EntityTypeConfiguration<Setting>
{
public SettingsConfiguration()
{
ToTable("UserSettings");
HasKey(s => new { s.UserID, s.SettingID });
}
}
熱烈地加載
Settings
*每次存儲庫返回用戶時,設置也會被加載*您是什麼意思?你的版本庫用戶檢索是怎樣的? – 2011-06-03 08:13:28你是如何檢查他們是否懶惰加載或不加載的。例如:如果您在調試模式下檢查它,它將顯示集合的值(通過延遲加載)。在訪問用戶/用戶時檢查由EF生成的sql – Eranga 2011-06-03 08:54:56
我的存儲庫檢索在DbSet上使用單個檢查很簡單,而且我已經在調試模式下檢查過它。任何建議如何檢查它沒有SQL分析器或任何其他第三方工具,如實體框架分析器? –
Sagi
2011-06-03 09:27:00