2017-09-23 31 views
0

我正在開發一個酒店管理系統,並且正在嘗試進行查詢以檢查預訂時間,如果時間已到,它將關閉預訂並返回一個房間類型。在單個查詢中更新並從實體框架中獲取記錄

關閉預訂意味着它將把它的狀態設置爲false現在的問題是,它會返回一個房型,此查詢:

var Records = db.BookingInformation 
       .Where(t => t.EndDate <= serverDate) 
       .Where(t => t.Booking == true) 
       .Select(t => t.RoomType).ToList(); 

這是返回客房類型,但它不轉動預訂到false。任何幫助?

我知道我還沒有嘗試更新預訂,但我不知道該怎麼做。

+0

記錄只是返回記錄列表。你想更新列表中的所有內容?我不認爲EF支持實體的批量更新。你必須像使用foreach一樣創建自己的場景('我不推薦'),無論如何你想要的是什麼? – Valkyrie

+0

以上查詢獲取預訂關閉時的那些記錄。我想抓取他們,並將他們的預訂狀態變爲假。這可以通過一個或兩個查詢來完成。幫助將不勝感激。 –

+0

你是否願意使用存儲過程?或完全EF和LINQ實體? – Valkyrie

回答

0

嘗試了這一點,應該做你所要求的:在執行此之後

var records = db.BookingInformation 
    .Where(t => t.EndDate <= serverDate) 
    .Where(t => t.Booking == true).ToList() 
     .Select(t => {t.Booking = false; return t.RoomType;}); 

的SaveChanges電話,否則,所做的更改不會保存到數據庫。

+0

我收到一個錯誤「一個聲明正文lamda表達式不能轉換爲表達式樹」 –

+0

我做了一個小的改變,所以在更改數據之前觸發查詢。立即嘗試.... – Isma

+0

謝謝你。你釘了它:) –