如何找出我的linq-to-sql语句中的错误?

时间:2011-11-08 21:11:45

标签: c# linq-to-sql

  

可能重复:
  What can I do to resolve a “Row not found or changed” Exception in LINQ to SQL on a SQL Server Compact Edition Database?

我收到此错误: -

  

“未找到或更改行。”

我的代码在这里: -

var tab1 = db.Tabl.Single(s => s.ID == ID);
tabl1.ReceivedDateTimeStamp = DateTime.Now;
tabl1.SentDateTimeStamp = null;
tabl1.Status = "RECEIVED";
db.SubmitChanges();

我还确保数据库中确实存在ID。有什么帮助吗?

来自SQL事件探查器的查询: - (实际表)

UPDATE [dbo].[Queue]
SET [QueuedDateTimeStamp] = @p8
WHERE ([QueueID] = @p0) AND ([FileName] = @p1) AND ([PNumber] = @p2) AND ([PName] = @p3) AND ([TNumber] = @p4) AND ([AcquireDate] = @p5) AND ([QueuedDateTimeStamp] = @p6) AND ([SentDateTimeStamp] IS NULL) AND ([Status] = @p7)', N'@p0 int,@p1 nvarchar(74),@p2 nvarchar(14),@p3 nvarchar(1),@p4 nvarchar(36),@p5 datetime,@p6 datetime,@p7 nvarchar(6),@p8 datetime', @p0 = 3, @p1 = N'150_5dadccc7-ca5b-4360-aa3e-6ffd3e8bf7b8_123456789-2011_D_20111019 0323 PM', @p2 = N'123456789-2011', @p3 = N'D', @p4 = N'5dadccc7-ca5b-4360-aa3e-6ffd3e8bf7b8', @p5 = 'Oct 19 2011  3:23:00:000PM', @p6 = 'Nov  8 2011  4:34:04:270PM', @p7 = N'QUEUED', @p8 = 'Nov  8 2011  4:41:31:370PM'

为什么它会在所有领域都有条件?而我只需更新记录,其中queueID ='1'

1 个答案:

答案 0 :(得分:0)

生成LINQ to SQL类后,您可能在数据库的某些表中更改了

简单的解决方案是再次生成这些类,但请确保在生成后复制您对它们所做的任何更改(即添加自定义字段或方法)。

另一个解决方案是回忆一下自从错误开始出现以来您在数据库中所做的更改(将字段从NOT NULL设置为NULL,反之亦然会导致此错误),然后进行相关操作LINQ to SQL类中的更改。