首页 > 解决方案 > 以自动方式满足条件后的实体框架更新字段

问题描述

我正在使用 C# 中的实体框架代码优先和 ASP.NET MVC。我有一张桌子:

public class Project
{
    public Guid Id { get; set; }
    public Guid UserId { get; set; }
    [Required]
    public DateTime CreationDate{ get; set; }
    [Required]
    public DateTime EndDate { get; set; }        
    [Required]
    public bool Active{ get; set; }

}

我的问题是,鉴于上述字段,通过后如何更新该Active字段EndDate

例如,结束日期是 08/04/2018,今天是 08/05/2018,则 Active=false。

请考虑到在这种情况下性能很重要。每个用户创建一个其他用户可以看到的项目。

谢谢你。

标签: c#asp.net-mvcentity-framework

解决方案


不是唯一的方法。使用适合您的需求/资源(您有权访问的 - 例如 SQL Server 代理)的一种。这会从 EF/应用程序中删除(此示例中的所有内容都在 SQL Server 中完成)。

一个简单的存储过程可以是:

// Expire after current date
UPDATE [insert your table name here] 
SET Active = 0 
WHERE DATEDIFF(DAY, EndDate, GETDATE()) > 0;

是的,您可以安排存储过程作为JOB

So assuming you named the stored procedure UpdateStatus, your job command would be EXEC dbo.UpdateStatus.

Hth...


推荐阅读