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