C# 将日期更改为列表中的所有对象并更新

C# 将日期更改为列表中的所有对象并更新,c#,entity-framework,datetime,ef-code-first,C#,Entity Framework,Datetime,Ef Code First,我正在尝试将日期更改为列表中的所有训练,其他属性工作正常,只有当我更改日期时,我才会遇到问题。我尝试过不同的故障排除方法,但都不奏效。我已尝试使用updatedWorkout.Date作为workoutStart=超出范围。如果我使用旧的.Date,那么,如何添加一个部分包含7天的新日期 也许有更好的办法 以下是我的方法: private int UpdateForAllWorkouts(IWorkoutCommand updatedWorkout) { try

我正在尝试将日期更改为列表中的所有训练,其他属性工作正常,只有当我更改日期时,我才会遇到问题。我尝试过不同的故障排除方法,但都不奏效。我已尝试使用updatedWorkout.Date作为workoutStart=超出范围。如果我使用旧的.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("");
        }
    }
private int updateforallworkout(IWorkoutCommand updatedWorkout)
{
尝试
{//获取时间表
var schedule=_scheduleRepository.getIncludeWorkout(updatedWorkout.ScheduleId);
//按计划id获取计划内的训练
var-workout=schedule.Workouts.FirstOrDefault(w=>w.Id==updatedWorkout.Id);
对于(var workoutStart=workout.Date;workoutStart w.Date==workoutStart&&w.StartTime==workout.StartTime);
var tmp=新型号。训练
{
Id=old.Id,
CourseId=updatedWorkout.CourseId,
InstructorId=updatedWorkout.InstructorId,

Date=/我想你可以使用循环7

像这样:

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

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

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

如果(WorkOutStase请考虑检查我们的DATETIFY属性的值。它们的值可能小于SQLServer允许的DATETIMEAR字段。

  • 在分配“tmp”对象之前,updatedWorkOut对象的日期值是多少
  • 您的“旧”对象是空的还是日期的值是多少

您的代码似乎没有问题。这个问题是DateTime属性和字段值的基础。

设置
Date
字段时会遇到什么问题?有问题的存储库是什么?它是否理解Id=old.Id的训练应该用提供的值更新?因为我看到您创建了新的训练,而不是更新t旧的…是实体框架还是L2S(标签中没有指定)?当我通过workoutstart=updatedWorkout设置日期时,我会得到一个out或range。好吧,它本身并不了解要更新的日期,我进行新训练的原因是存储库采用了一个数据模型,但我得到的是一个域模型。我使用的是EF CodeFirst方法。在哪个迭代中会出现异常?是第一次吗是否?你的意思是我必须做另一个循环?在第一个循环中没有其他方法吗?我已经尝试过这个解决方案,但是我从哪里得到新的日期?