我有实体框架项目,我希望在更改日期时重置值,或者明天将值重置为0.我有两个表名为目标和计算。目标表有goalId,calorieToday,calorieGoal和Calculation表有goalId,date和amount。我想重置calorieToday和当天更改时的金额,它适用于背景。因此,当用户再次打开明天的应用程序时,calorieToday和金额值将变为0.
这是在GoalDataContext中:
public DbSet<Goal> Goals { get; set; }
public DbSet<Calculation> Calculations { get; set; }
编辑: 我想要的是当天变化时擦除卡路里的所有价值。每天,卡路里今天的价值在改变一天后变为0。目标的goalId是主键,也是计算的外键
答案 0 :(得分:0)
如果要在DataContext / Database中输入,则必须将更改写入DataContext / Database。请参阅:update record with entity framework
要重置CaloryToday你需要知道的目标,何时。 当用户启动应用程序时,您可以检查是否存在当天的计算。如果没有,那就是新的一天,卡路里今天应该重置。
Goal goal = (Goal of the current user)
DateTime currentDay = DateTime.Now.Date;
var date = GetCalculationByGoalId(goal.GoalID).Max(p => p.Date);
if(date < currentDate) {
ResetGoal(goal);
}
答案 1 :(得分:0)
好的,所以我得到了我想做的事。 我今天更换了每卡路里,表格上的金额值变为0。
public static void ResetItem()
{
using (var db = new GoalDataContext())
{
foreach (var item in db.Goals)
item.calorieToday = 0;
foreach (var item2 in db.Calculations)
{
item2.amount = 0;
db.Calculations.Remove(item2);
}
db.SaveChanges();
}
}
然后在MainPage部分,我写了这段代码
private void CalorieTracker_Loaded(object sender, RoutedEventArgs e)
{
DateTime currentTimeStamp = new DateTime();
using (var db = new GoalDataContext())
{
foreach (var datenow in db.Calculations)
currentTimeStamp = datenow.date;
}
DateTime currentNow = DateTime.Now;
int changeDay = currentNow.Day;
if (currentTimeStamp.Day != changeDay)
{
DataContextHelper.ResetItem();
}
//other stuff's here
}
它已经过测试,它的工作!白天变化后,卡路里今日值将重置。比较表格和现在的日期。