在我的WCF Web服务中,我一直在从数据库中读取,没有任何问题。今天我尝试了更新,但很快发现这些更改实际上并未保存到数据库中。我没有得到任何错误或异常。我花了最后几个小时研究这个问题没有运气。我发现了许多类似的问题,但大多数时候他的理由是写入的表没有主键,但是这个表不是这样。
以下是一些代码:
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();
答案 0 :(得分:3)
您正在创建一个全新的BookingResult
,但不会附加到DataContext
,因此在您致电SubmitChanges
时不会将其视为更改。数据库中是否有一个名为BookingResults
的表?您希望新的BookingResult
会发生什么?它会创建一个新行吗?