我需要计算我的应用程序中(?:.+(?:\/|%2F))+?([^\/]+\.jpg)(?=\?)
,daysPastDue
将由DateTime.Now - Loan.DueDate
计算。
一个例子是:
Loan.DueDate
= 2/1/18 12:00:00
DateTime.Now
= 2/4/18 2:17:00
DaysPastDue
=应为'3'
我可以通过以下方式从我的观点中做到这一点:
查看
@if (DateTime.Now > item.Loan.DueDate)
{
item.Loan.DaysPastDue = (DateTime.Now - item.Loan.DueDate).Value.Days;
}
但问题是它从不在我的数据库中保存它只是在视图上计算。
所以我想在显示视图之前计算Loan.DaysPastDue
值并执行db.SaveChanges()
。
我如何做到这一点?
修改 这是我的更新/插入方法:
// GET: Kits
[Authorize(Roles = "Admin, User")]
public ActionResult Index()
{
var kits = db.Kits.Include(k => k.Loan).Include(k => k.Products);
//Right here is where I wanted to do something like:
// if (DateTime.Now > db.Loan.DueDate)
//{
// var daysPastDue = (DateTime.Now - item.Loan.DueDate).Value.Days;
// Loan.DaysPastDue = daysPastDue;
// db.SaveChanges(Loan.DaysPastDue) //This is the part I think I'm stuck on
return View(kits.ToList());
}
答案 0 :(得分:4)
您通常不想在数据库中保存计算值。在您的样本中,它已经过去了3天。明天是4天。该视图将显示4天,因为它正在计算它,但如果某人没有提取该视图,数据库值将如何更新?
如果你仍想在显示视图时重新计算并保存该值,那么这样的事情应该有效:
foreach(var kit in kits.Where(k => DateTime.Now > k.Loan.DueDate)
{
kit.Loan.DaysPastDue = (DateTime.Now - kit.Loan.DueDate).Value.Days;
db.SaveChanges(kit);
}