2009-02-03 41 views
15

我有以下代碼:LINQ的 - 未找到行或更改

 Guid id = imageMetaData.ID; 

     Data.LinqToSQL.Image dbImage = DBContext.Images.Where(x => x.ID == id).SingleOrDefault(); 

     dbImage.width = imageMetaData.Width; 
     dbImage.height = imageMetaData.Height; 

     DBContext.SubmitChanges(); 

望着SQL事件探查器,正在生成的SQL語句:

exec sp_executesql N'UPDATE [dbo].[Images] 
SET [height] = @p0, [width] = @p1 
WHERE 0 = 1',N'@p0 int,@p1 int',@p0=603,@p1=365 

爲什麼我的WHERE語句不包括「where id = ....」???

我在做什麼錯?

我的應用程序將引發與消息ChangeConflictException ......「未找到行或更改」

+0

我們需要在此之前查看代碼...您的datacontext如何/何時實例化? imageMetaData.ID設置在哪裏? – 2009-02-03 21:53:22

+2

這張桌子上有觸發器嗎? – BFree 2009-02-03 22:06:59

回答

38

檢查以確保你的模型數據庫匹配。如果它們不同步,那麼我已經遇到過這種情況,在大多數情況下,它是可空標誌。看看這個article可能的原因。

我假設您使用的是.net 3.5(Visual Studio 2008)的發行版。

+2

謝謝,只是一個簡單的null沒有設置的問題。必須有一個更好的方式來保持數據庫的同步! – 2010-11-06 17:43:50

0

我有同樣的問題,只是刪除.dbml文件(設計器)中的表,然後再從數據庫中刪除,然後構建我的應用程序。它解決了我的問題。

相關問題