重用数据而不需要访问数据库 - ASP.NET MVC

时间:2013-12-05 08:18:47

标签: c# asp.net-mvc

修改已使用以下代码编写的复杂函数:

private List<string> Values()
{
    if (ViewBag.Sample == null)
    {
        ViewBag.Sample = TestData();
    }
}
// where TestData() hits the DB and returns corresponding result

值()在同一个文件中被称为多个位置,这将通过第一次点击DB TestData()返回,并且从下一次调用它将直接从ViewBag。

这是一个好方法吗?

我们在MVC中处理这种情况的所有替代方法是什么?由于数据库命中率很高,我们需要使用其他一些技术。

由于

6 个答案:

答案 0 :(得分:0)

该代码应确保您第一次调用该方法时只触摸数据库。 如果在多个页面上使用相同的数据,您也可以在Cache-或Session类中使用相同的数据。

答案 1 :(得分:0)

如果从数据库检索的数据大小不是很大,那么您可以使用Cache

否则,您也可以将数据存储在Session中。

答案 2 :(得分:0)

您可以选择保留Session,Cache等数据。

答案 3 :(得分:0)

[OutputCache(Duration = 60)] // Caches for 60 seconds
private List<string> Values()
{
    if (ViewBag.Sample == null)
    {
        ViewBag.Sample = TestData();
    }
}

答案 4 :(得分:0)

MVC Model Binder

See Sample code

答案 5 :(得分:0)

您可以将数据保存在会话中:

Session['*your session key*'] = TestData();

然后像这样检索它:

var myData = Session['*your session key*'] as YouObject //cast it to an object if you need to.

或者您可以使用缓存:

System.Web.HttpRuntime.Cache[cacheKey] = TestData

并检索:

var myData =System.Web.HttpRuntime.Cache[cacheKey] as YourObject