每次在ASP.NET MVC中运行网站时,如何在数据库中传递已存储的数据?

时间:2017-11-14 22:05:05

标签: c# asp.net-mvc visual-studio-2017 asp.net-4.5

每次在ASP.net MVC中运行网站时,如何在数据库中传递已存储的数据? 我有一个带方法的控制器,我希望每次运行应用程序时都要对已存储的数据执行。 还有什么方法可以改变这种存储的数据及时传递到控制器的方式。假设我希望每五分钟将这些存储的数据传递到控制器中的方法一次。

1 个答案:

答案 0 :(得分:1)

您需要的是cache单身人士。

e.g。

public interface IMyStuff{
 string VeryImportantStringHere {get;}
}

public MyStuff :IMyStuff {

public string VeryImportantStringHere => {
    var cached = HttpRuntime.Cache.Get(nameof(VeryImportantStringHere));
    if(cached != null) // might need to store something else if you could have nulls in db
    {
         return cached ;
    }

    cached = .... // retrieved from DB however you do it - ADO.net, Linq2Sql, EF etc...

    Cache.Insert(nameof(VeryImportantStringHere), cached , null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5));

    } 
}

然后在您的控制器中,使用任何DI:

public controller MyController : Controller{

private IMyStuff _ms;
public MyController(IMyStuff ms)
{
    _ms = ms;
}

[HttpGet]
public ActionResult Whatever(){
    var cached = _ms.VeryImportantStringHere; // cached now has the value.
    return View();
    }
}