【问题标题】:Why does the Visual Studio DataSet Designer generate such complicated queries?为什么 Visual Studio 数据集设计器会生成如此复杂的查询?
【发布时间】:2013-07-10 20:35:16
【问题描述】:

我在 MS Access 数据库中有一个简单的表:

-------------------
| Programs        |
|-----------------|
| Id (PrimaryKey) |
| Name            |
| Path            |
| Notes           |
-------------------

然后使用 Visual Studio 向导生成相应的DataTableTableAdapter

生成的 Select 语句看起来和预期的一样:

SELECT Id, Name, Path, Notes
FROM Programs

但是生成的Update语句很复杂:

UPDATE Programs
SET          Id = ?, Name = ?, Path = ?, Notes = ?
WHERE  (Id = ?) AND (? = 1) AND (Name IS NULL) AND (? = 1) AND (Path IS NULL) OR
                  (Id = ?) AND (? = 1) AND (Name = ?) AND (Path IS NULL) OR
                  (Id = ?) AND (? = 1) AND (Name IS NULL) AND (Path = ?) OR
                  (Id = ?) AND (Name = ?) AND (Path = ?)

为什么生成这么复杂? 为什么不是更简单,像这样:

UPDATE Programs
SET Id = ?, Name = ?, Path = ?, Notes = ?
WHERE  (Id = ?)

【问题讨论】:

  • 这是一个隐藏的 NSA 查询
  • 哇-闻起来很糟糕

标签: visual-studio tableadapter dataset-designer


【解决方案1】:

因为查询会检测自上次选择以来是否对数据库进行了更改。您可以关闭这种检查以简化查询。

从“TableAdapter 配置向导”中,选择“高级选项...”并取消选中“使用乐观并发”

请参阅 Optimistic Concurrency (ADO.NET)http://msdn.microsoft.com/en-us/library/aa0416cz.aspx

【讨论】:

  • 谢谢@AMissico,现在我明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2023-03-06
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
相关资源
最近更新 更多