EF Code First Lazy loading不工作

我首先使用EF6代码,但似乎无法使延迟加载工作。 急切的装载工作正常。 我有以下课程:

public class Merchant : User { ... public virtual ICollection MerchantLocations { get; set; } } public class MerchantLocation : BaseEntity { ... public int MerchantId { get; set; } public virtual Merchant Merchant { get; set; } } public class User : BaseEntity { ... } public class BaseEntity { ... public int Id { get; set; } } 

我通过以下代码测试我的延迟加载位置(失败):

 public void Test_Lazy_Loading() { using (var context = new MyDbContext()) { var merchant = context.Users.OfType.First(); merchant.MerchantLocations.ShouldNotBeNull(); // fails } } 

然而,急切的加载工作正常:

 public void Test_Eager_Loading() { using (var context = new MyDbContext()) { var merchant = context.Users.OfType.Include("MerchantLocations").First(); merchant.MerchantLocations.ShouldNotBeNull(); // passes } } 

MerchantLocations被标记为public virtual所以我不确定问题是什么。 我还在我的DbContext构造函数中添加了以下内容:

 Configuration.LazyLoadingEnabled = true; Configuration.ProxyCreationEnabled = true; 

编辑:我还注意到在上述测试中返回的merchant对象不是EF代理。 这是一个普通的Merchant 。 我怀疑这是导致问题的原因。

我意识到问题是Merchant类不符合代理生成的要求。 具体来说,我需要添加一个受保护的无参数构造函数。 我只有一个私人的。