私はエンティティデータモデルを介して接続されているデータベースを使用していますが、DBコンテキストを使用してエンティティを作成および更新しています。エンティティframewokでDBcontextを使用してエンティティを更新していません
My Createメソッド(下)が正常に動作しています。
[HttpPost]
public IHttpActionResult PostCustomer([FromBody] Customer Customer)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
using (var dbCtx = new CustomerDBEntities())
{
dbCtx.Customers.Add(Customer);
dbCtx.SaveChanges();
}
return CreatedAtRoute("DefaultApi", new { id = Customer.id }, Customer);
}
しかし、私の更新方法は何もしていません。私は間違いや何も起こっていない何かを得ることはありません。値を更新していません。 私はSQLコマンドを使用していた場合はそれがうまく働いていたデータベースに直接行くが、私はそれを変更して以来、それが動作を停止する前に、コードはこの
[HttpPut]
public IHttpActionResult UpdateCustomer([FromBody] Customer Customer)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Customer cust;
var ctx = new CustomerDBEntities();
cust = ctx.Customers.Where(s => s.id == Customer.id).FirstOrDefault<Customer>();
if (cust != null)
{
cust.Customer_Name = Customer.Customer_Name;
cust.email = Customer.email;
cust.Customer_address = Customer.Customer_address;
}
ctx.Entry(cust).State = System.Data.EntityState.Modified;
ctx.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = Customer.id }, Customer);
}
です。
ご協力いただければ幸いです。
if(cust!= null)< - これがnullではないことを確かめますか? – Daniel
[Entity Framework 6を使用してレコードを更新するにはどうすればいいですか?](http://stackoverflow.com/questions/25894587/how-to-update-record-using-entity-framework-6) –
エンティティが同じコンテキスト内でフェッチされているときにエンティティ状態を手動で設定します( 'ctx.Entry(cust).State = System.Data.EntityState.Modified;')。ただし、状態を設定しても影響はありません。 try catchを入れ、エラーがないことを確認します。また、パフォーマンス上の理由から、 'ctx.Customers.Find(Customer.id)'のようなエンティティを 'Where'と' FirstOrDefault'の代わりに使うことができます。 – Developer