2016-10-08 13 views
0

こんにちは、私はazureでgetとpostを同時に使ってC#webserviceを結合しようとしています。アイデアは、CDの詳細をuniqueCDcodeとwebserviceはちょうどjsonの情報を出力し、uniqueCDcodeは別のテーブルに保存する必要がありますCDClicked私はすべてのclickedCDのリストを取得するので、私は動向などについては最後の50を取ることができますが、実際には見えませんそれを働かせるために。これは、私はあなたが応答を返すそして、保存しない/あなたのレコードを取得する必要があり、これまでレコードを取得し、単一のC#Webサービスでデータベースに保存する

//// WS# 00002 GET THE ALBUM DETAILS 
    [Route("api/Music/Album/{uniqueCDcode}")] 
    public HttpResponseMessage GetAlbum(int uniqueCDcode) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, 
      new { AlbumMusic = db.Music 
       .Where(am => am.uniqueCDcode == uniqueCDcode); 

     db.CDClicked.Add(uniqueCDcode); 

    } 
+0

ユーザがウェブサイト内のCDの詳細についてボタンをクリックし、ウェブサービスがその情報をデータベースから戻し、ウェブサービスが内部にストアするDBの別のテーブルユーザーがクリックしたCD(ユニークなCDコード) –

+0

レコードを取得し、保存してから応答を返す必要があります。 returnステートメントが値を返してからサービスの実行を停止するため、2番目の部分であるAdd()メソッド呼び出しは機能しません。あなたのロジックはreturn文の前に実行する必要があります。 –

答えて

2

を持っているものです。 return文が最初に値を返してからサービスの実行を停止するため、dbContext(2番目の部分)へのAdd()メソッド呼び出しは機能しません。したがって、2番目の部分には到達しません。あなたのロジックはreturn文の前に実行する必要があります。例えば

[Route("api/Music/Album/{uniqueCDcode}")] 
public HttpResponseMessage GetAlbum(int uniqueCDcode) 
{ 
    db.CDClicked.Add(uniqueCDcode); 

    return Request.CreateResponse(HttpStatusCode.OK, 
     new { AlbumMusic = db.Music 
      .Where(am => am.uniqueCDcode == uniqueCDcode)}); 
} 

また、コード内のいくつかの書式の問題がありました。あなたの括弧と括弧は一致しませんでした(あなたがSOに貼り付けたコードでは少なくとも)。私は以下の答えで修正しました。

注:ハリケーン関連の問題が原因でコードをテストすることはできませんが、これは一般的な考え方です。

+1

あなたが答えをどうもありがとう、別の列に日付と時刻を保存したいのであれば、何を追加する必要がありますか? db.CDClicked.Add(ユニークなCDコード)に;私は元の質問にそれを追加するのを忘れました。 –

+1

うわー....それはまったく別の新しい質問です。 Entity Frameworkを使用していると仮定している場合:データベース/モデルに列を追加し、そのモデルのインスタンスを作成して、uniqueCDcodeではなくaddメソッドに渡す必要があります。または、デフォルトでdatetime値を格納するデータベースに列を追加して、C#コードをまったく変更する必要はありません。エンティティフレームワークを使用していますか?その場合、エンティティファースト、コードファースト、またはデータベースファーストを使用しますか? –

+1

実際にあなたのアイデア "デフォルトでdatetime値を格納しているデータベースに列を追加"は完璧に動作します。私はデフォルトのタイムスタンプ機能を使用しました。 –

関連する問題