程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 Entity Framework Core 中推迟操作执行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_674_0@如何解决如何在 Entity Framework Core 中推迟操作执行? 开发过程中遇到如何在 Entity Framework Core 中推迟操作执行的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 Entity Framework Core 中推迟操作执行的解决方法建议,希望对你解决如何在 Entity Framework Core 中推迟操作执行有所启发或帮助;

所以,假设我有一个实体的状态。我想更改该状态,然后在一段时间后将其更改回来。例如,我想租一些东西 5 小时,所以我请求创建一个新的租用订单条目,并将项目的状态更新为 InRent。因此,5 小时后我希望状态自动更改为 InStock

我知道,它可以在 GET 请求上实现,下次有人尝试获取有关这些状态的数据时。但是有更好的方法吗?提前致谢:)

UPD:志律回答中的第二个和第三个选项是我要的。谢谢:)

@H_674_0@解决方法

正如 SvyatoslavDanyliv 所说,您可以添加一个新的 datetiR_289_11845@e 列:Rentexpiration。然后将其与当前时间进行比较,并根据结果更改状态。

当用户租用实体时,您可以将其状态从 InStock 更改为 InRent(默认状态为 InStock)并设置 Rentexpiration 时间。

然后,要更新状态和 Rentexpiration,您可以使用以下方法:

  1. 检查并更新下一个请求中的状态

    在下一个请求中,在获取/列出实体之前,您可以检查实体是否有 Rentexpiration 时间(通过 EF Core DbContext),如果它有 Rentexpiration 时间和时间已过期,将状态更改为 InStock 并重置或清除 Rentexpiration 时间。如果实体没有 Rentexpiration,则状态应为 InStock,如果 Rentexpiration 时间未过期,则状态应为 InRent

    之后,您可以查询实体表并获取最新数据(带状态)。然后,如果您租用实体,则调用 update 方法更改状态并设置 Rentexpiration 时间。

  2. 创建一个存储过程以根据 Rentexpiration 时间更新状态,然后创建一个 SQL Server 代理作业,该作业将每 5 分钟(或 10 分钟)运行该存储过程。

    更新状态命令如下:

    updatE RentTable SET Status = 'InStock' WHERE Status = 'InRent' AND Rentexpiration < getdate() AND Rentexpiration IS NOT NULL

    然后,您可以参以下链接来创建 SQL 作业:

    Create a schedule
    Execute Stored Proc Using SQL Job

    使用这种方法,它会改变SQL Server上的状态,SQL Job也会自动改变状态。

  3. 创建调度程序后台任务/作业以更新状态。

    在后台作业中,查询数据库以获取实体(通过 EF Core DbContext),然后比较 Rentexpiration 时间并根据结果更新状态。

    可以参以下链接在 asp.net core 应用程序中创建后台任务。

    BACkground tasks with hosted services in ASP.NET Core

    How to trigger .NET Core 3.1 Hosted service at certain time?

大佬总结

以上是大佬教程为你收集整理的如何在 Entity Framework Core 中推迟操作执行全部内容,希望文章能够帮你解决如何在 Entity Framework Core 中推迟操作执行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。