0

我正在尝试将日期更改为列表中的所有锻炼,其他属性工作正常,只有当我更改日期时才会出现问题。我尝试了不同的故障排除方法,但都没有奏效。我尝试使用 updatedWorkout.Date 作为锻炼开始 = 超出范围。如果我使用 old.Date,那么,我怎样才能添加新的 7 天日期?

也许有更好的方法来做到这一点?

这是我的方法:

    private int UpdateForAllWorkouts(IWorkoutCommand updatedWorkout)
    {
        try
        {   // get schedule
            var schedule = _scheduleRepository.GetIncludeWorkouts(updatedWorkout.ScheduleId);
            // get workouts within the schedule by schedule id
            var workout = schedule.Workouts.FirstOrDefault(w => w.Id == updatedWorkout.Id);

            for (var workoutStart = workout.Date; workoutStart <= schedule.ToDate; workoutStart = workoutStart.AddDays(7))
            {
                // get specdfic workout by workout id and start time
                var old = schedule.Workouts.Single(w => w.Date == workoutStart && w.StartTime == workout.StartTime);

                var tmp = new Model.Workout
                              {
                                  Id = old.Id,
                                  CourseId = updatedWorkout.CourseId,
                                  InstructorId = updatedWorkout.InstructorId,
                                  Date = //<---problem
                                  StartTime = updatedWorkout.StartTime,
                                  EndTime = updatedWorkout.EndTime,
                                  ScheduleId = updatedWorkout.ScheduleId,
                                  WeekOffSet = updatedWorkout.WeekOffSet.Days
                              };
            }

            return updatedWorkout.Id;
        }
        catch (Exception ex)
        {
            throw new Exception("");
        }
    }

谢谢你的帮助!

4

2 回答 2

0

请考虑检查我们的 DateTime 属性的值。它们的值可能小于 SQL 服务器允许的日期时间字段。

  • 在分配“tmp”对象之前,updatedWorkOut 对象的 Date 值是多少?
  • 您的“旧”对象是 null 还是 date 的值是多少?

你的代码似乎没问题。该问题是 DateTime 属性和字段值的基础。

于 2012-08-13T01:39:39.677 回答
0

我认为您可以为 7 使用循环。

像这样 :

var workoutStart = workout.Date;
while(true){

    if(workoutStart <= schedule.ToDate){
    // Do something
    }else{
        break;
    }

    workoutStart = workoutStart.AddDays(7);
}
于 2012-08-10T01:09:08.073 回答