25

有什么理由这样的事情不起作用吗?

这是我多次使用 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(); 未检测到需要任何更新。

4

2 回答 2

75

该表无法正确更新,因为它没有主键。(实际上它有列,但是当我执行 SELECT INTO 我的开发表时,约束没有被复制)。DataContext 类需要用于更新的主键。

于 2008-10-16T13:12:02.173 回答
2

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

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

于 2008-10-15T21:22:31.340 回答