Dot-Net

Linq - 未找到或更改行

  • August 29, 2012

我有以下程式碼:

       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 Profiler,正在生成以下 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 並顯示消息…“未找到或更改行”

檢查以確保您的模型與數據庫匹配。如果它們不同步,我已經遇到過這個問題,在大多數情況下是可以為空的標誌。查看這篇文章以了解可能的原因。

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

在以下位置找到解決方案:http : //social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95(由 Todd Fleenor 發布)

問題可以通過將表從伺服器資源管理器重新拖動到設計器並重建來解決此錯誤。所以設計器與 SQL 表不同步……

引用自:https://stackoverflow.com/questions/509045