c# - 以自动方式满足条件后的实体框架更新字段
问题描述
我正在使用 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。
请考虑到在这种情况下性能很重要。每个用户创建一个其他用户可以看到的项目。
谢谢你。
解决方案
这不是唯一的方法。使用适合您的需求/资源(您有权访问的 - 例如 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...
推荐阅读
- react-native - 如何在 react-native-webview 中获取 SPA 的 url 更改事件?
- terminal - 如何创建仅包含文件而不包含文件的目录的 tarball?
- python - 如何在 Python 3 中安装 pip 并连接到 Jupyter Notebook?
- php - HTML 表单 (method = "post") 不会提交
- python - 为什么我在字典上迭代得到不同的结果
- python-3.x - Azure Python函数:无法打开图像'':没有这样的文件或目录@error/blob.c/OpenBlob/3537
- python - Dataframe - 找到匹配后停止搜索并导出数据
- javascript - 合并具有相同 id 的多个对象 - Lodash
- javascript - 计算并将值从选择选项传递到输入框
- javascript - 如果找不到数字,如何使它说出特定的内容(Discord.js)