Linq - 未找到或更改行

时间:2009-02-03 21:46:36

标签: .net linq linq-to-sql .net-3.5

我有以下代码:

        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,并显示消息......“找不到或未找到行”

3 个答案:

答案 0 :(得分:38)

检查以确保您的模型与数据库匹配。如果它们不同步,我会遇到这种情况,在大多数情况下是可以为空的标志。查看此article了解可能的原因。

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

答案 1 :(得分:1)

http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95找到解决方案 (由Todd Fleenor发布)

通过将表从服务器资源管理器重新划分到设计器并重建,可以解决此错误。所以设计师与SQL Table不同步......

答案 2 :(得分:0)

我遇到了同样的问题,只是删除了.dbml文件(设计器)中的表,然后再次从数据库中删除,然后构建了我的应用程序。它解决了我的问题。