保持表小的最好方法是删除旧的(过去的日期)条目,代码首先asp.net mvc

本文关键字:条目 日期 代码 mvc net asp 过去 方法 删除 | 更新日期: 2023-09-27 18:17:01

我想知道从首先使用EF代码创建的'SpaceEvent'实体中删除旧条目(带有过去日期)的最佳方法。目标是使表尽可能的小。

**我特别想删除过去的条目(例如,昨天或之前的任何条目)

我是否创建一个服务并独立于我的网站运行它,或者我是否在我的网站解决方案中创建一个程序,当我的网站发布时以某种方式启动,每N分钟运行一次,或者我是否从Sql Server运行一些东西?这里最好的解决方案是什么?

这是我的实体

public class SpaceEvent
{
    [Key]
    public int SpaceEventId { get; set; }
    //public string Title { get; set; }
    [Index]
    //research more about clustered indexes to see if it's really needed here
    //[Index(IsClustered = true, IsUnique = false)]
    [Required]
    public DateTime DateTimeScheduled { get; set; }
    [Required]
    public int AppointmentLength { get; set; }
    public int StatusEnum { get; set; }
    public virtual ICollection<Student.RegisteredStudent> RegisteredStudents { get; set; }
    public int RegisteredStudentCount { get; set; }
    public byte[] LastRegisteredStudentImage { get; set; } // represents the last student to register for the class
    public string LastRegisteredStudentPhrase { get; set; }
    [Index]
    public int SpaceRefId { get; set; }
    [ForeignKey("SpaceRefId")]
    public virtual Space Space { get; set; }
}

保持表小的最好方法是删除旧的(过去的日期)条目,代码首先asp.net mvc

尝试使用Hangfire。它专门用于处理这些类型的场景。您可以简单地设置一个循环任务,它将在您要求的任何时间间隔内运行。最重要的是,它可以作为web应用程序的一部分运行,因此不需要创建混乱的windows服务,并且易于部署。

延迟发射网站

很难告诉你"最好的解决方案"。你的问题有一个基于观点的答案。

然而,我认为最简单的方法是创建一个T-SQL脚本,并直接在SQL SERVER中运行。这个解决方案的问题是,您需要手动执行此操作。如果你想要一些自动的东西,你可以使用服务,比如Azure Web Jobs。因此,您可以创建一个类似控制台的c#程序,并安排它在特定的时间间隔内运行。

要查看有关Azure Web job的更多信息,请查看https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/