6

オブジェクトの各プロパティを明示的に設定する必要はありません。 Productは、フォームのサブミットからデフォルトのモデルバインダーによって作成されるオブジェクトであり、ProductInDbは、オーバーライド/更新するコンテキスト/データベースのオブジェクトです。 ProductIDの主キーは両方で同じです。変更を保存し、既存のオブジェクトをEntity FrameWorkで更新し、個々のプロパティを個別に設定する必要はありません。

var ProductInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID); 

        ProductInDb = product; 

        context.SaveChanges(); 

答えて

13

既存productを添付し、Modifiedとしてその状態を設定することができます。

あなたはObjectContext

context.Products.Attach(product); 
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified); 

context.SaveChanges(); 
+0

についてDbContext API

context.Products.Attach(product); context.Entry(product).State = EntityState.Modified; context.SaveChanges(); 

を使用している場合は "エントリ" の定義が含まれていません。私は何かを参照する必要がありますか?既にSystem.Data.Objectsを使用しています。ほかに何か ? ctrl +を押す。エントリーには何も与えません。 – LaserBeak

+0

@LaserBeakあなたが 'ObjectContext'を使っているようです。私の更新された答えを見てください。 – Eranga

+0

@Eranga私の次の質問をご覧ください:http://stackoverflow.com/questions/16085654/pk-violation-while-updating-via-ef/16086406?noredirect=1#16086406 –