【问题标题】:LINQ not updating on .SubmitChanges()LINQ 未更新 .SubmitChanges()
【发布时间】:2008-10-15 21:15:18
【问题描述】:

有什么理由这样的东西不起作用吗?

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

【问题讨论】:

  • submitchanges 上享受您的分类学家:P

标签: linq linq-to-sql submitchanges


【解决方案1】:

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

【讨论】:

  • 还有我的。这么多年过去了,我仍然犯这个错误。很容易被忽视,尤其是。当只有一张桌子有问题时。为什么飞碟还在上面?代表太多?
【解决方案2】:

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

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

【讨论】:

  • updateUser.InUse = !updateUser.InUse;不是问题。它不能为空,我尝试过硬编码 false 和 true。它不是自动生成的。
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多