2012-02-23 13 views
1

私のWCF Webサービスでは、私は全く問題なくデータベースから読んでいます。今日私は更新を試みましたが、変更が実際にデータベースに保存されていないことをすぐに発見しました。エラーや例外がスローされることはありません。私は最後の数時間、運がない問題を研究するのに費やしました。私は多くの似たような質問を見つけましたが、その理由の大部分は、書かれているテーブルにプライマリキーがないという理由がありましたが、このテーブルではそうではありません。C#のLINQ to SQL>更新と挿入が機能しません。テーブルがありますPK

ここにいくつかのコードです:

var db = new dbDataContext(Convert.ToString(ConfigurationManager.AppSettings["sConn"])); 

... 


     var bookingRow = (from mBooking in db.d_bookings 
          where mBooking.booking_id == bookingID 
          select new BookingResult 
          { 
           guideID = mBooking.user_id_guide == null ? 0 : (int)mBooking.user_id_guide, 
           adultShow = mBooking.booking_nAdults_show == null ? 0 : (int)mBooking.booking_nAdults_show, 
           childShow = mBooking.booking_nChild_show == null ? 0 : (int)mBooking.booking_nChild_show, 
          } 
         ).Single(); 

     bookingRow.guideID = someNewValue; 
     bookingRow.adultShow = someNewValue; 
     bookingRow.childShow = someNewValue; 

     try 
     { 
      db.SubmitChanges(); 
     } 
     catch (Exception ex) 
     { 
      return "{\"result\" : \"false\" }"; 

     } 

そしてBookingResultクラスは単純です:

public class BookingResult 
{ 
    public int guideID { get; set; } 
    public int adultShow { get; set; } 
    public int childShow { get; set; } 
} 

これは、WCFとLINQでの作業私の最初のプロジェクトであり、それはほとんどの部分は非常にまっすぐ進むと思われたが、これはループのために私を投げた。どんな助けでも大歓迎です!

解決済み:問題は、自分のDataContextに添付されていないカスタムクラスを読み込んでいることでした。クラスを削除し、行全体を選択するだけで正常に動作します。

var bookingRow = (from mBooking in db.d_bookings 
         where mBooking.booking_id == bookingID 
         select mBooking 
       ).Single(); 

答えて

3

あなたはDataContextに添付されず、したがって、あなたがSubmitChangesを呼び出す変化として考慮されない全く新しいBookingResultを作成しています。データベースにBookingResultsと呼ばれるテーブルがありますか?新しいBookingResultに何が欲しいですか?それは新しい行を作りますか?

+0

実際、私は簡単な使い方のために自分自身で作成したクラスに情報を読み込むことができただけです。ここでの考え方は、更新する行を検索し、変更を加えてからデータベースに変更をコミットすることです。編集:検索された行を格納するために作成したクラスの名前だけ、BookingResultというテーブルはありません。 – dekin88

+0

私は今働いている!私は私のカスタムクラスに読み込みを停止し、ちょうど全体の行を選択しました。今私の変更は機能しています。正しい方向に私を指してくれてありがとう! – dekin88

関連する問題