我在更新SQL DB记录时有一个荒谬的问题。我编写了一个使用EF数据模型更新我的数据库的函数,如下所示:

public static void UpdateEventTime(int ID, int year, int month, int day, int hour, int minute, int duration)
{
  (from e in SchedulerDatabase.Events where e.ID == ID select e).Single().Duration = duration;
  SchedulerDatabase.SaveChanges();
}


这非常有效,但是当我尝试更新多个字段时,如下所示:

public static void UpdateEventTime(int ID, int year, int month, int day, int hour, int minute, int duration)
{
  Event E = (from e in SchedulerDatabase.Events where e.ID == ID select e).Single();
  E.StartDate = new DateTime(year, month, day, hour, minute, 0);
  E.Duration = duration;
  SchedulerDatabase.SaveChanges();
}


它不起作用!但是,如果我在此处放置一个断点并再次运行它,则表明EF已更新,原因是E.Duration保存了更新后的值(而不是DB中的值),但它不会更新数据库!我究竟做错了什么?它仅更新一个字段吗?!(如果删除E.StartDate = ...行,它可以工作并更新数据库)还是日期时间有问题?!

最佳答案

1.出于好奇。.您为年,月,日,小时和分钟输入的值是多少?您是否可能传入了无效的参数值?

2.我认为您需要让EF知道您正在更改对象的状态。

我没有Visual Studio,但是可以尝试以下方法:

public static void UpdateEventTime(int ID, int year, int month, int day, int hour, int minute, int duration)
{
  Event E = (from e in SchedulerDatabase.Events where e.ID == ID select e).Single();
  E.StartDate = new DateTime(year, month, day, hour, minute, 0);
  E.Duration = duration;
  SchedulerDatabase.Entry(E).State = EntityState.Modified;
  SchedulerDatabase.SaveChanges();
}

关于c# - 使用Linq和EF无法更新记录的多个字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21797633/

10-17 00:29