【发布时间】:2014-07-29 08:33:47
【问题描述】:
我正在尝试创建一个 asp.net mvc web 应用程序,一些页面需要“实时”显示数据,这些数据在 sql server 数据库上,数据总是在变化 我在 sql server 中创建了一个存储过程,我在我的控制器中使用实体框架 linq 调用此过程,并使用 ajax 将结果发送到浏览器 我使用 outputcashing 来最小化存储过程的执行次数, 在同一个控制器中,有多个方法使用相同的存储过程,每个方法都执行相同的过程, 如何提高我的应用程序的性能, 有没有办法让所有控制器只执行一次存储过程??
这是我的控制器,我的目标是尽量减少数据库的使用
[OutputCache(Duration = 20, VaryByParam = "*")]
public class JobsETLController : Controller
{
private ETL_REP_MAUIEntities db = new ETL_REP_MAUIEntities();
public ObjectResult<BIOGetETLJobs_Result> ETLJobs;
public JobsETLController()
{
ETLJobs =db.BIOGetETLJobs();
}
public ActionResult Indexp()
{
var y = from xx in ETLJobs
where xx.etat!="Completed"
orderby xx.etat ascending
select xx;
return PartialView(y);
}
public ActionResult IndexpAll()
{
var y = from xx in ETLJobs
where xx.etat == "Completed"
select xx;
return PartialView(y);
}
【问题讨论】:
-
我的应用程序检测到数据库中某些表的变化并通知用户,这些表的内容不断变化
-
不要使用轮询,而是考虑使用类似 websockets 可以为您提供的“推送”模型。您的应用程序可以设置 SqlDependency。每当您监控的数据库查询发生更改时,您的应用程序都会收到通知,您可以使用 SignalR 通知您的客户...techbrij.com/…
-
谢谢,我只需要每 5 分钟更新一次数据,所以它不是真正的实时,但问题是同一个控制器多次使用存储过程,
标签: c# sql sql-server asp.net-mvc entity-framework