2013-07-10 34 views
1

我有一個簡單的表在MS Access數據庫:爲什麼Visual Studio DataSet Designer會生成如此複雜的查詢?

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

然後使用Visual Studio嚮導生成我相應DataTableTableAdapter

生成的Select語句看起來就像預期:

SELECT Id, Name, Path, Notes 
FROM Programs 

但是生成的更新語句很複雜:

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 = ?) 
+1

這是一個隱藏國家安全局查詢 – DanFromGermany

+0

哇 - 那味道不好 – Rikalous

回答

4

因爲查詢檢測是否變化到數據庫自去年選擇完成的。您可以打開這種檢查來簡化查詢。

從 'TableAdapter配置嚮導',選擇「高級選項...」,取消選擇 '使用開放式併發'

樂觀併發(ADO.NET)http://msdn.microsoft.com/en-us/library/aa0416cz.aspx

+0

謝謝@AMissico,現在我明白了。 –

相關問題