Web APIでpostメソッドを作成して、1つのテーブルの部分的な更新 - テーブルのOrder Statusフィールドを変更しました。ここで私がこれまでに得たものである:私はコードとすべてのステップ実行していますWeb APIの部分的な更新が機能していません
public IHttpActionResult UpdateOrderStatus(Order ord)
{
try
{
if (!ModelState.IsValid)
{
throw new ProcessException("One or more values are invalid, please check.");
}
using (MyContext ctx = new MyContext())
{
ord.StatusID = 3;
ctx.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = ord.OrderID }, ord);
}
}
catch (Exception ex)
{
throw new ProcessException(ex.Message);
}
}
作業していないしているようだ - エラーが、データベースが更新取得されません。私は間違って何をしていますか?
更新:ウェブAPIメソッドに渡す前に、オブジェクトにStatusIDを設定
:
するvar ORD = { "受注":1、 "受注日":CURRENTDATE、 "StatusID" :3};
public IHttpActionResult UpdateOrderStatus(Order ord)
{
try
{
if (!ModelState.IsValid)
{
throw new ProcessException("One or more values are invalid, please check.");
}
using (MyContext ctx = new MyContext())
{
ctx.Entry(ord).State = EntityState.Modified;
ctx.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = ord.OrderID }, ord);
}
}
catch (Exception ex)
{
throw new ProcessException(ex.Message);
}
}
2つのこと: 'Order.StatusID = 3;' 'おそらくord.StatusID = 3 'のであるべきであり、あなたがそうした後、これを必要とする:;' 'ctx.Entry(ORD).State = EntityState.Modified –
これはEntity Frameworkを使用していますか?私はあなたのORMをどのように呼んでいるのかという問題があると思います。あなたのORMにタグをつけてください、または手作りの場合はMyContextのコードを含めてください。メソッドを直接呼び出すとどうなりますか? – psaxton
EntityFrameworkを使用している場合は、更新するOrderオブジェクトについてコンテキストに通知する必要があります。 EF6では、通常、 'Orders'というコンテキスト上に' DbSet'プロパティがあるので、 'StatusID'を設定する前に' ctx.Orders.Attach(Order) 'を追加することをお勧めします。 – Rob