我在更新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/