我有这个对象
public class Iteration
{
public int Id { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public bool Active { get; set; }
}
它存储的值如下:
Id: 1
Start 10-07-2019
End 17-07-2019
Active: true
如果在此范围内,这是在创建新迭代(POST请求)时,将“迭代”设置为活动状态。
public async Task<ActionResult> AddIteration([FromBody]IterationDTO iterationDTO)
{
// Set active if current date is in the added range
if (DateTime.Now.Date >= iterationDTO.Start.Date && DateTime.Now.Date <= iterationDTO.End.Date)
{
iterationDTO.Active = true;
}
DB.Set<Iteration>().Add(iterationDTO);
await DB.SaveChangesAsync();
return Ok(iterationDTO);
}
现在问题出在活动字段,我在创建新迭代时对其进行了检查。但是我希望它不仅可以在创建时随时更改,该如何做?例如,日期更改,并且有新的检查更改了活动的迭代。
答案 0 :(得分:3)
我认为您正在使更新数据库条目变得复杂,因为您始终可以根据start
和end
属性来计算该值。
如果您需要在后端访问扩展,只需在模型上创建扩展
public static class IterationExtensions {
public static bool Active(this Iteration iteration)
{
return DateTime.Now.Date >= iteration.Start.Date && DateTime.Now.Date <= iteration.End.Date;
}
}
或在将其发送到客户端之前将其映射到ViewModel:
public class IterationViewModel
{
public int Id { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public bool Active
{
get { return DateTime.Now.Date >= this.Start.Date && DateTime.Now.Date <= this.End.Date; }
}
}
答案 1 :(得分:0)
我认为您需要的是一项服务,该服务会不断运行并不时检查迭代。
例如,您可以创建一个Windows服务,该服务每24小时验证一次迭代,如果迭代已过期,则将其停用。无论如何,您都必须创建一个更新方法。
检查此链接以获取帮助: https://stackify.com/creating-net-core-windows-services/