2017-03-18 13 views
0

削除メソッドがうまくいかず、問題が発生しました。 私はそれを取得しようとしているので、Postmanを使用して注文からアイテムを取り除くことができます。 作品を追加するだけで問題はありませんが、削除することはできません。私はGoogleのソリューションにしようとしているが、間違ったものを見つけ続ける。 lineNumberとOrderIDに基づいてアイテムを削除するようにして、すべてのオーダーで同じlineNumberを削除しないようにする必要があります。メソッドの追加、削除/削除はC#REST APIではありません

以下は、現在のremoveメソッドの後ろにあるaddメソッドです。私はそれがおそらくまだ分かっていないかもしれないという気持ちを持っています。

  public async Task<short> AddAsync(int orderID, OrderItemDTO item) 
    { 
     if (item.LineNumber != 0) 
     { 
      throw new ValidationException("LineNumber is generated and cannot be specified"); 
     } 

     short lineNumber = (short)(_db.OrderItems.Where(oi => oi.OrderID == orderID).Max(oi => oi.LineNumber) + 1); 

     _db.OrderItems.Add(new OrderItem() 
     { 
      Quantity = item.Quantity, 
      OrderID = orderID, 
      LineNumber = lineNumber, 
      Price = item.Price, 
      ProductID = item.ProductID, 
      StudentPersonID = item.StudentPersonID 
     }); 

     await _db.SaveChangesAsync(); 

     return lineNumber; 
    } 


    public async Task<short> RemoveAsync(int orderID, OrderItemDTO item) 
    { 
     if (item.LineNumber != 0) 
     { 
      throw new ValidationException("LineNumber is generated and cannot be specified"); 
     } 

     short lineNumber = (short)(_db.OrderItems.Where(oi => oi.OrderID == orderID).Max(oi => oi.LineNumber)); 

     _db.OrderItems.Remove(new OrderItem() 
     { 

      OrderID = orderID, 
      LineNumber = lineNumber, 

     }); 


     await _db.SaveChangesAsync(); 

     return lineNumber; 
    } 
+0

問題は、何が表示されたのか、何らかのエラーがあれば何を得るのでしょうか?あなたはあなたの行動を全く打つのですか? –

答えて

0

は、あなたがあなたの方法上記[HttpPost][HttpDelete]に欠けているように私には思えます。

1を更新しましたMicrosoft Reference

[HttpPost] 
public async Task<short> AddAsync(int orderID, OrderItemDTO item) 

[HttpDelete] 
public async Task<short> RemoveAsync(int orderID, OrderItemDTO item) 

リファレンスを参照してください。

public async Task<short> RemoveAsync(int orderID, OrderItemDTO item) 
    { 
     if (item.LineNumber != 0) 
     { 
      throw new ValidationException("LineNumber is generated and cannot be specified"); 
     } 

     var objToDelete = _db.OrderItems.Where(oi => oi.OrderID == orderID && oi.LineNumber == item.LineNumber); 

     _db.OrderItems.Remove(objToDelete);  

     await _db.SaveChangesAsync(); 

     return xxx ; //replace what you want to return 
    } 

は2を更新:

このコード行は、あなたのためEFエンティティからオブジェクトを削除しようとされることはありません新しいオブジェクトを作成してRemoveメソッドに渡しました。 EFは削除するオブジェクトを見つけることができません。

代わりに、まずエンティティから削除するオブジェクトを取得する必要があります。その後、そのオブジェクトを渡します。これは1行で行うことができますが、わかりやすくするために2行で記述します。

+0

Postmanを使いましたが、Postmanを使用しました。注文にアイテムを追加します。私はそれがそうであるとは思えません。すでに参照ページを見てきました。おそらく他の場所でエラーが発生しているか、削除を間違って記述しています。 – dsantrat

+0

Removeメソッドから返されるエラーまたは結果は何ですか? – TTCG

+0

私はビジュアルスタジオでエラーが発生しません。注文3行目4、 "ExceptionMessage"の削除を実行するとPostmanに1件が届きます: "LineNumberが生成され、指定できません"、 "ExceptionType": "System.ComponentModel .DataAnnotations.ValidationException "、 – dsantrat

0

私はデータベースから正しく削除しないで、すでに削除された後で再度削除しようとしていました。オブジェクトが入力から作成された後にコードを削除するようにコードを変更しました。

関連する問題