【问题标题】:How to pull from database only when data has changed?仅当数据更改时如何从数据库中提取?
【发布时间】:2015-09-23 17:35:03
【问题描述】:

我有一个使用 C#/MVC 4.5 的汽车网站,我需要找到一种更动态的方式从数据库中提取数据。更具体地说是动态刷新数据。

到目前为止,我已经想出了两种提取数据的方法,但是由于不同的原因它们都是不可接受的:

Car.cs 根据一个 int 参数从数据库中提取数据。

    // CarContorller.cs
    public class CarController : Controller
    {
        public static Car Car1 = new Car(1);
    }

    // FrontPage.cshtml
    @using CarSite.Models
    @{
        Car C = new Car(1);
    }
    <div class="car-name">
        Car Name From Model (Database): @C.Name
        Car Name From Controller (Memory): @CarSite.Controllers.CarController.Car1.Name <br>
    </div>

这就是我的困境:

  • 从模型中拉取会在每次加载网站时强制刷新数据。因此,如果我有 3 辆汽车,每天有 1000 名访客,数据每天被提取 3000 次,即使它一遍又一遍地提取相同的数据。

  • 从控制器中拉取只允许数据拉取一次,但如果发生变化,则在重置站点之前不会反映出来。

是否可以仅在控制器数据发生更改时刷新它?如果是这样,这是如何实现的?如果没有,我该怎么做才能防止这么多数据拉取?

【问题讨论】:

  • 让我们使用 asp.net 缓存。链接到数据库的缓存将被通知更改以刷新其数据。 :D
  • 我想在你的控制器中添加 DateTime LastTimeModified 是没有问题的?
  • @hungndv 你能扩展一下吗?你知道有一篇文章可以描述得更多吗?

标签: c# asp.net-mvc-4


【解决方案1】:

您正在寻找的是使用 Sql Dependency 进行缓存

这方面的例子很多,我记得在学习的时候读过这个:

http://www.srikanthtechnologies.com/blog/dotnet/sqlcachedependency.aspx

我还发现了这篇 SO 帖子,您可能会觉得它很有用:

How to use SqlCacheDependency?

【讨论】:

  • 我的连接字符串需要使用 dsn,System.Data.SqlClient 不适用于 dsn。你知道有什么类似的东西可以与 dsn 一起使用吗?
猜你喜欢
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多