如何在经过一段时间后重置数据库值.Net MVC c#

本文关键字:数据库 Net MVC 置数据 经过 一段时间 | 更新日期: 2023-09-27 18:11:49

我遇到了一个问题,不知如何解决。我希望用户从下拉菜单更改存储到数据库的值。经过一段时间后(比如1小时),我希望将该值重置为默认值。我是否必须编写一个服务,它位于服务器上,并在值更改时激活?真的不知道从哪里开始,因此寻找解决方案

如何在经过一段时间后重置数据库值.Net MVC c#

这听起来像是Revalee的完美用例。Revalee,一个开源项目,是一个允许你安排回调到你的web应用程序的服务。Revalee使用Windows服务管理任务持久性和调度,但利用ASP。. NET MVC应用程序来处理所需的处理(在您的情况下是重置数据库值)。

要使用Revalee,您可以:

  1. 在您的服务器上安装Revalee服务,一个Windows服务。Windows Service的源代码(你可以自己编译),Revalee网站上提供的预编译版本,或者可以通过Chocolatey轻松安装。

  2. 在Visual Studio项目中使用Revalee客户端库。客户端库可以在源代码中获得(同样,您可以自己编译),或者通过NuGet提供预编译版本。

  3. 要注册回调(在本例中使用Revalee的客户端库),您需要在ASP中包含一个类似于以下的方法。NET MVC应用程序。当用户最初存储"可重置"值时,将调用该函数:

    private void ScheduleReset(int userId)
    {
        // The callback will be 1 hour from now
        DateTimeOffset callbackTime = DateTimeOffset.Now.AddHours(1.0);
        // The callback URL will include the user ID
        Uri callbackUrl = new Uri(
                string.Format(
                        "http://mywebapp.com/Schedule/Reset/{0}",
                        userId
                    )
            );
        // Register the callback request with the Revalee service
        RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
    }
    
  4. Reset动作在一小时内被调用(包含用户的ID),那么你的应用程序将重置该用户的存储值为其首选的默认值。

Revalee项目网站有一个完整的API参考以及如何安装和配置Windows服务的说明。

我希望这对你有帮助。好运!

免责声明:我是参与Revalee项目的开发者之一。然而,需要明确的是,Revalee是免费的开源软件。源代码可以在GitHub上找到

这似乎是一个有多个"正确"答案的设计决策。

我可能会在记录中添加一个字段,该字段有一个datetime,用于存储项目更改的日期。批处理作业然后定期运行,挑选那些自上次运行时以来已经过期的记录,然后将它们更改回来。