需要只执行一次辅助方法(缓存结果)

时间:2017-03-22 11:09:28

标签: c# asp.net-mvc-5

我正在为我的MVC应用程序创建一个帮助器类。该类将包含静态方法,这些方法将在用户首次登录系统时提取信息。

我创建了两个方法,它们将返回列表,例如国家/地区列表和语言列表。我不想每次都执行此操作,但保存第一次通话的结果并将其返回以便后续通话。

public static List<Languages> GetLanguages()
{
   using (var db = new MCREntities())
    {
        var languages = db.spGetLanguages(0);
        return Mapper.Map<List<Languages>>(languages);

    }
}
public static List<Countries> GetCountries()
{
    using (var db = new MCREntities())
    {
        var countries = db.spGetAllCountries("");
        return Mapper.Map<List<Countries>>(countries);
    }
}

2 个答案:

答案 0 :(得分:0)

我想说创建一个具有所需属性liek的类

public static class  CurrentSession{ 
 List<Languages> lang{get;set;}
List<Countries> countries{get;set;} 
} 

并在global.asax文件中

 protected void Application_Start()
        {
//.........predefined codes

    CurrentSession.lang = GetLanguages();

    CurrentSession.Countries =GetCountries();

答案 1 :(得分:0)

在您的课程中,您可以拥有静态列表,该列表将首次尝试Languages尝试访问数据库。

private static List<Languages> _languages = null;

public static List<Languages> GetLanguages()
{
    if(_languages == null){
        using (var db = new MCREntities())
        {
            var languages = db.spGetLanguages(0);
            _languages = Mapper.Map<List<Languages>>(languages);

        }
    }
    return _languages;
}

或者,您可以实施cache