にコミットしない方法(ボタンのクリックでトリガー)DbContext.SaveChanges()これは、ASP.NET MVCコントローラのアクションの一部である私のコードであり、SQL Serverデータベース
using(var context = new EDIDEVEntities())
{
var result = from b in context.DOWNLOAD_ORDER_HEADER.Where(b => csgList.Contains(b.PRO_NUM_ALPHA)) select b;
foreach (var item in result)
{
item.STATUS = "Assigned";
}
context.SaveChanges();
}
それはスローされません。エラーはありますが、データベース内のレコードは更新されません。
私はこのラインを使用してみました:foreachループの前
context.Entry(result).State = EntityState.Modified;
を、それはエンティティタイプDbQuery`1は、現在のモデルの一部ではない
を言うエラーがスローされますコンテキスト
私はコードの実際の行のようなものでなければならないことを理解する:
DOWNLOAD_ORDER_HEADER doh;
context.Entry(doh).State = EntityState.Modified;
しかし、DOWNLOAD_ORDER_HEADERテーブルの1つのフィールドは、LINQクエリで返された行のみを更新する必要があります。これどうやってするの?
'context.Entry(Item).State = EntityState.Modified; 'ループ内 –
同じコンテキストで更新が実行されるため、エンティティの状態を手動で変更しなくても正常に動作するはずです。あなたは 'result'で期待される出力を得ていますか? – Developer
foreach行の前/にブレークポイントを追加して、 'result'が空でないことを確認することができます。さもなければ、私は変更がどのように保存されないかはわかりません。 –