C#>;中的LINQ到SQL;更新和插入无效。表中有PK
在我的WCFWeb服务中,我一直在毫无困难地从数据库中读取数据。今天我尝试了一次更新,但很快发现这些更改实际上并没有保存到数据库中。我没有收到任何错误或异常抛出。在过去的几个小时里,我一直在研究这个问题,但运气不佳。我发现了许多类似的问题,但大多数情况下,原因是要写入的表没有主键,但是这个表不是这样 下面是一些代码:C#>;中的LINQ到SQL;更新和插入无效。表中有PK,c#,sql,wcf,linq,C#,Sql,Wcf,Linq,在我的WCFWeb服务中,我一直在毫无困难地从数据库中读取数据。今天我尝试了一次更新,但很快发现这些更改实际上并没有保存到数据库中。我没有收到任何错误或异常抛出。在过去的几个小时里,我一直在研究这个问题,但运气不佳。我发现了许多类似的问题,但大多数情况下,原因是要写入的表没有主键,但是这个表不是这样 下面是一些代码: var db = new dbDataContext(Convert.ToString(ConfigurationManager.AppSettings["sConn"]));
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
,它不会附加到DataContext
,因此在调用SubmitChanges
时不会被视为更改。数据库中是否有一个名为BookingResults
的表?你希望你的新图书结果会怎么样?它会创建一个新行吗?实际上,我只是在别处读到,我可以将信息读入我自己制作的一个类中,以便于使用。这里的想法是检索要更新的行,进行一些更改,然后将更改提交到数据库。编辑:忘了提到没有名为bookingreult的表,它只是我创建用来存储检索到的行的类的名称。我现在已经让它工作了!我停止阅读我的自定义类,只选择了整行。现在我的改变正在起作用。谢谢你给我指明了正确的方向!