私の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();
実際、私は簡単な使い方のために自分自身で作成したクラスに情報を読み込むことができただけです。ここでの考え方は、更新する行を検索し、変更を加えてからデータベースに変更をコミットすることです。編集:検索された行を格納するために作成したクラスの名前だけ、BookingResultというテーブルはありません。 – dekin88
私は今働いている!私は私のカスタムクラスに読み込みを停止し、ちょうど全体の行を選択しました。今私の変更は機能しています。正しい方向に私を指してくれてありがとう! – dekin88