方法中的一次预取

One prefetch in method

我有一些方法在底部。我想多次调用此方法,但另外我只想调用 Session.Prefetch<OpParamDef>() 一次。我需要做什么?有什么特殊的命令吗?我想第一次调用 Prefetch

public void method
{
    get
    {
        Session.Prefetch<OpParamDef>();              
        var result = new List<OpParamDef>();
    }
}

您可以考虑使用 Lazy<T> 来存储延迟加载的集合。文档是 here

基于您的问题的示例用法可能是:

Lazy<List<OpParamDef>> Collection { get; set; } 
//...in your ctor
Collection = new Lazy<List<OpParamDef>>(() => Session.Prefetch<OpParamDef>());

您可以多次访问 Collection.Value,但是 Session.Prefetch<OpParamDef>() 只会在第一次调用时使用,然后缓存该初始化程序的结果。

您甚至可以将 Value 访问器隐藏在 属性 后面:

public List<OpParamDef> CollectionAsList
{
    get
    {
        return Collection.Value;
    }
}

这样做的好处是,如果不使用该值,则根本不会加载初始化函数。

除此之外,您还可以在任何上下文中灵活地使用此方法。 (应用程序级别、请求上下文等)