C#中的LINQ to SQL>更新和插入不起作用。表有PK

时间:2012-02-23 15:26:39

标签: c# sql wcf linq

在我的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();

1 个答案:

答案 0 :(得分:3)

您正在创建一个全新的BookingResult,但不会附加到DataContext,因此在您致电SubmitChanges时不会将其视为更改。数据库中是否有一个名为BookingResults的表?您希望新的BookingResult会发生什么?它会创建一个新行吗?