2017-09-23 18 views
0

ホテル管理システムを使用していますが、予約のタイミングを確認するクエリを作成しようとしています。タイミングが終了すると予約が終了しますルームタイプを返す。Entity Frameworkから1つのクエリでレコードを更新して取得する

は予約が、それは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

上記のクエリは、予約が締められているレコードをフェッチしています。私はそれらをフェッチし、予約状況を偽にしたい。これは、1つまたは2つのクエリで行うことができます。ヘルプをいただければ幸いです。 –

+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メソッドこれを実行した後、それ以外の変更はDBに永続化されることはありません。

+0

文のボディでlamda式を式ツリーに変換できません –

+0

データを変更する前にクエリがトリガされるように少し変更しました。今すぐお試しください.... – Isma

+0

ありがとうございました。あなたはそれを釘付け:) –

関連する問題