2012-02-23 51 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

你创建一个全新的BookingResult,不会附着在DataContext,当你调用SubmitChanges因此将不被视为一个变化。数据库中是否有名为BookingResults的表格?你希望你的新BookingResult会发生什么?它会创建一个新的行吗?

+0

其实我刚才读的其他地方,我可以读出的信息为一类我自己方便使用。这里的想法是检索想要更新的行,进行一些更改,然后将更改提交到数据库。编辑:忘记提及没有名为BookingResult的表,它只是我创建的用于存储检索行的类的名称。 – dekin88 2012-02-23 15:45:23

+0

我现在有工作!我停止阅读我的自定义类,并选择了整行。现在我的更改正在工作。感谢您指点我正确的方向! – dekin88 2012-02-23 15:59:46