2016-12-18 1 views
0

私はエンティティフレームワークプロジェクトを持っており、その日が変更されたときに値をリセットしたい、または明日値が0にリセットされます。ゴールテーブルにはgoalId、calorieToday、およびcalorieGoalがあり、計算テーブルにはゴールID、日付、および金額があります。私は、日が変更され、それがバックグラウンドで動作するときに、カロリーと今日の量をリセットしたい。再び、ユーザオープン明日のためのアプリケーション、calorieTodayと量の値は0データベースの値を1日後にリセットする

になっただろうときにこれはGoalDataContextの内側にある:

public DbSet<Goal> Goals { get; set; } 
public DbSet<Calculation> Calculations { get; set; } 

編集: 日があるとき、私は何をしたいことはcalorieTodayのすべての値を消去しています変更。毎日、カロリートゥディの値は変更後に0になります。 GoalのgoalIdが主キーであり、計算のための外部キーです

+0

コードはデータベースに何も保存しません。また、新しい 'Goal'オブジェクトを作成します。 * re * -setには何がありますか?あなたが達成しようとしていることは明確ではありません。 –

+0

日が変更されたとき、私はcalorieTodayを0にリセットしたいと思います。それは実現したいと思います –

答えて

0

わかりましたので、私は何をしたいのですか? は、私はすべてのcalorieTodayを変更し、テーブル上の量の値はメインページのセクションに続いて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(); 
     } 
    } 

になった、私はそれが既にテストされ、それが動作しています。このコード

 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 
    } 

を書きます!日が変わった後、カロリーの今日の値がリセットされます。テーブルと現在の日との日を比較します。

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); 
} 
+0

私はそれをデバッグするときに日付を変更したいのですが、DataContextでは何も変更しませんでした。 –

+0

編集された回答を参照 –

+0

私は編集された答えをチェックしましたが、その日が終わったときに値をリセットする方法を知りたいと思います。 –

関連する問題