簡體   English   中英

使用Linq和EF無法更新記錄的多個字段

[英]Update multiple fields of a record using Linq and EF not working

我在更新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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM