首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EF代码第一次延迟加载无效?

EF代码第一次延迟加载无效?

提问于 2018-01-30 00:58:07
回答 1关注 0查看 184

首先在EF6中使用代码:

代码语言:txt
复制
public class Merchant : User
{
    ...

    public virtual ICollection<MerchantLocation> 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; }
}

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

代码语言:txt
复制
public void Test_Lazy_Loading() {
    using (var context = new MyDbContext()) {
        var merchant = context.Users.OfType<Merchant>.First();
        merchant.MerchantLocations.ShouldNotBeNull(); // fails
    }
}

然而:

代码语言:txt
复制
public void Test_Eager_Loading() {
    using (var context = new MyDbContext()) {
        var merchant = context.Users.OfType<Merchant>.Include("MerchantLocations").First();
        merchant.MerchantLocations.ShouldNotBeNull(); // passes
    }
}

MerchantLocations标记为public virtual

代码语言:txt
复制
Configuration.LazyLoadingEnabled = true;
Configuration.ProxyCreationEnabled = true;

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档