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文件(设计器)中的表,然后再从数据库中删除,然后构建我的应用程序。它解决了我的问题。

相关问题