延迟加载没有调用该函数

时间:2014-01-31 06:43:25

标签: c# lazy-loading

当我调试我的应用程序时,我发现下面的代码行没有调用我的服务层中的任何方法:

private Lazy<List<userAudit>> lazyList = null;
lazyList = new Lazy<List<userAudit>>(() => client.GetAudit(10).ToList());

并且,我的GetAudit方法将返回审计对象列表,下面是其定义:

public List<t_user_audit> GetAudit(int id)
{
   return _work.GetGenericRepositoryFor<List<userAudit>>().GetByID(id);
}

并且,在上面的定义中,我在GetAudit方法中插入了一个断点,但是当编译器没有进入断点并且只返回NULL值时。

我不知道我在哪里犯了错误或代码有什么问题。

我正在关注Can you explain Lazy Loading文章。

2 个答案:

答案 0 :(得分:3)

根据documentationLazy

Provides support for lazy initialization.课程的重点是

这是正常的

lazyList = new Lazy<List<userAudit>>(() => client.GetAudit(10).ToList());

不会调用此方法。

但是,如果您使用Value属性

,则会调用它

答案 1 :(得分:2)

延迟加载意味着在您需要或使用时获取值

这里

lazyList = new Lazy<List<userAudit>>(() => client.GetAudit(10).ToList());

您只是创建谓词或者您可以为您查询签名意味着方法不会被调用 一旦你像下面提到的那样使用它

var output = lazyList.Value;

方法被调用