保持表小的最好方法是删除旧的(过去的日期)条目,代码首先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; }
}
尝试使用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/