2008-10-15 53 views
21

是否有任何这样的原因不会工作?LINQ不更新上.SubmitChanges()

这是逻辑我已经使用了多次更新与LINQ在表中的记录:

DataClasses1DataContext db = new DataClasses1DataContext(); 
User updateUser = db.Users.Single(e => e.user == user); 
updateUser.InUse = !updateUser.InUse; 
db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true }; 
db.SubmitChanges(); 

(updateUser.InUse是位字段)出于某种原因,它不是加工。当我检查linq.log时,它是完全空白的。

难道我的.dbml会出现问题吗?其他表似乎工作正常,但我已经比较了.dbml中的属性,它们都匹配。

就好像db.SubmitChanges();没有检测到任何需要的更新。

+1

享受`submitchanges`的分类学家:P – DJTripleThreat 2011-02-05 02:50:58

回答

66

该表无法正确更新,因为它没有主键。 (其实它有列,但约束没有复制时,我做了一个SELECT INTO我的开发表)。 DataContext类需要更新的主键。

2

就LINQ而言,InUse属性是“正常”属性吗? (例如它不是自动生成的或任何类似的东西?)

或者,我不认为它是可空的< bool>是,它的当前值为null?如果是这样,你的更新行实际上并没有做任何事情 - 对于可空布尔值,!null = null。

+0

updateUser.InUse =!updateUser.InUse; 不是问题所在。它不是可以空的,我已经尝试了硬编码错误和真实。 它不是自动生成的。 – ctrlShiftBryan 2008-10-15 22:43:05

+0

如果更改其他字段,它会更新吗? – 2008-10-15 22:58:15

相关问题