C# 在不影响DB的情况下重用数据-ASP.NET MVC
我正在修改已编写的复杂函数,它们使用以下代码:C# 在不影响DB的情况下重用数据-ASP.NET MVC,c#,asp.net-mvc,C#,Asp.net Mvc,我正在修改已编写的复杂函数,它们使用以下代码: private List<string> Values() { if (ViewBag.Sample == null) { ViewBag.Sample = TestData(); } } // where TestData() hits the DB and returns corresponding result 私有列表值() { 如果(ViewBag.Sample==null) { Vi
private List<string> Values()
{
if (ViewBag.Sample == null)
{
ViewBag.Sample = TestData();
}
}
// where TestData() hits the DB and returns corresponding result
私有列表值()
{
如果(ViewBag.Sample==null)
{
ViewBag.Sample=TestData();
}
}
//其中TestData()命中数据库并返回相应的结果
Values()被称为同一文件中的多个位置,第一次点击DBTestData()返回,下一次调用直接从ViewBag返回
这是一个好方法吗
我们在MVC中有哪些替代方法来处理这个场景?因为DB hit是一个代价高昂的调用,我们需要使用其他一些技术
谢谢代码应该确保您仅在第一次调用该方法时才接触数据库。
如果在多个页面上使用相同的数据,那么在Cache或Session类中也可能有很多数据。该代码应确保仅在第一次调用该方法时才接触数据库。
如果在多个页面上使用相同的数据,那么在缓存或会话类中也会有很多数据。如果从数据库检索到的数据的大小不是很大,那么您可以使用
否则,您也可以将数据存储在中。若从数据库检索到的数据的大小不是很大,那个么您可以使用
否则,您也可以将数据存储在中。您可以选择保留数据,如会话、缓存 您可以选择保留会话、缓存等数据
[OutputCache(持续时间=60)]//缓存60秒
[OutputCache(Duration = 60)] // Caches for 60 seconds
private List<string> Values()
{
if (ViewBag.Sample == null)
{
ViewBag.Sample = TestData();
}
}
私有列表值()
{
如果(ViewBag.Sample==null)
{
ViewBag.Sample=TestData();
}
}
[OutputCache(持续时间=60)]//缓存60秒
私有列表值()
{
如果(ViewBag.Sample==null)
{
ViewBag.Sample=TestData();
}
}
MVC型号活页夹
MVC型号活页夹
您可以这样在会话中保存数据:
Session['*your session key*'] = TestData();
var myData = Session['*your session key*'] as YourObject //cast it to an object if you need to.
然后像这样检索它:
Session['*your session key*'] = TestData();
var myData = Session['*your session key*'] as YourObject //cast it to an object if you need to.
或者您可以使用缓存:
System.Web.HttpRuntime.Cache[cacheKey] = TestData
和检索:
var myData =System.Web.HttpRuntime.Cache[cacheKey] as YourObject
您可以这样在会话中保存数据:
Session['*your session key*'] = TestData();
var myData = Session['*your session key*'] as YourObject //cast it to an object if you need to.
然后像这样检索它:
Session['*your session key*'] = TestData();
var myData = Session['*your session key*'] as YourObject //cast it to an object if you need to.
或者您可以使用缓存:
System.Web.HttpRuntime.Cache[cacheKey] = TestData
和检索:
var myData =System.Web.HttpRuntime.Cache[cacheKey] as YourObject
“重用数据而不命中数据库”-通常称为“缓存”-“重用数据而不命中数据库”-通常称为“缓存”