我在c#中创建了一个非常简单的方法,但是我在页面上的任何地方都使用了它。有没有一种方法可以减少方法调用,我的意思是方法一旦调用,返回值存储在某个地方,而我使用该值。这是我的代码。
我已经声明了一些这样的公共财产。
public OrderCollection GetAllClickCollectOrders
{
get
{
return GetClickCollectOrderDetails(Session["SelectedStorePostCode"].ToString());
}
}
public OrderCollection GetShippedClickCollectOrders
{
get
{
return GetShippedClickCollectOrderDetails();
}
}
AND这里是方法。
protected OrderCollection GetClickCollectOrderDetails(string postcode)
{
// some database ziggy wiggy...
return cncOrderCol;
}
protected OrderCollection GetShippedClickCollectOrderDetails()
{
// some database ziggy wiggy...
return cncShippedOrderCol;
}
所以,可以说,当我想要这样收集的东西时。
BindGridView(GetAllClickCollectOrders);
orderCount.Text = "Total orders placed: " + GetAllClickCollectOrders.Count;
if (isShipped.Checked)
{
BindGridView(GetShippedClickCollectOrders);
orderCount.Text = "Total orders shipped: " + GetShippedClickCollectOrders.Count;
}
因此,每当我使用该属性时,它每次都会调用方法并进入数据库并返回结果。但是,除非我更改
Session["SelectedStorePostCode"]
值,否则大多数情况下结果都是相同的。我在想是否有更好的方法将结果存储在某个地方并使用它。注意:代码工作正常,但我正在寻找更好的性能。多谢你们...
最佳答案
您似乎想要的是缓存数据库调用的结果。
您可以通过将数据库中的结果存储在Cache
类的实例中来实现。
可以将Cache
项目设置为在一定时间后过期,因此可以确定,如果基础数据已更改,则该值将每隔很长时间更新一次。
这适用于所有用户(会话)之间共享的项目-如果希望缓存用户之间唯一的项目,则可以将值存储在会话变量中,尽管这可能会导致Web服务器上的内存压力。
关于c# - 代码优化:通过存储返回值减少方法调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14498137/