成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

巧用ADO.NET DbCommandBuilder生成命令

開發 后端
文章這里介紹了ADO.NET DbCommandBuilder對象自動生成 DbDataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。

ADO.NET還是比較常用的,于是我研究了一下ADO.NET,在這里拿出來和大家分享一下,希望對大家有用。如果在運行時動態指定 SelectCommand 屬性(例如,通過接受用戶提供的文本命令的查詢工具),那么您可能無法在設計時指定適當的 InsertCommand、UpdateCommand 或 DeleteCommand。 如果您的 DataTable 映射到單個數據庫表或者是從單個數據庫表中生成的,那么您可以利用 ADO.NET DbCommandBuilder對象來自動生成 DbDataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。

為了能夠自動生成命令,必須設置 SelectCommand 屬性,這是最低要求。 由 SelectCommand 屬性檢索的表架構確定自動生成的 INSERT、UPDATE 和 DELETE 語句的語法。

#T#為了返回構造 INSERT、UPDATE 和 DELETE SQL 命令所需的元數據,DbCommandBuilder 必須執行 SelectCommand。 因此,必須額外經歷一次到數據源的過程,這可能會降低性能。若要實現最佳性能,請顯式指定命令而不是使用 ADO.NET DbCommandBuilder。SelectCommand 還必須至少返回一個主鍵或唯一列。 如果不存在任何主鍵和唯一列,則會生成 InvalidOperation 異常,并且不會生成命令。當與 DataAdapter 關聯時,ADO.NET DbCommandBuilder會自動生成 DataAdapter 的 InsertCommand、UpdateCommand 和 DeleteCommand 屬性(如果它們為空引用)。 如果某個屬性已存在 Command,則使用現有 Command。

通過聯接兩個或更多個表來創建的數據庫視圖不會被視為單個數據庫表。 在這種情況下,您無法使用 DbCommandBuilder 來自動生成命令;必須顯式指定命令。 有關顯式設置命令以將對 DataSet 的更新解析回數據源的信息,請參見使用 DataAdapter 更新數據源 (ADO.NET)。

您可能需要將輸出參數映射回 DataSet 的更新行。 一項常見的任務是從數據源中檢索自動生成的標識字段或時間戳的值。 默認情況下,DbCommandBuilder 不會將輸出參數映射到更新行中的列。 在這種情況下,必須顯式指定命令。 有關將自動生成的標識字段映射回插入行的列的示例,請參見檢索標識或 Autonumber 值 (ADO.NET)。

更新和刪除的開放式并發模型

為 UPDATE 和 DELETE 語句自動生成命令的邏輯基于“開放式并發” -- 即未鎖定記錄的編輯功能,其他用戶或進程可以隨時修改。 由于在從 SELECT 語句中返回某記錄之后但在發出 UPDATE 或 DELETE 語句之前,該記錄可能已被修改,所以自動生成的 UPDATE 或 DELETE 語句包含一個 WHERE 子句,指定只有在行包含所有原始值并且尚未從數據源中刪除時,才會更新該行。 這樣做的目的是為了避免覆蓋新數據。當自動生成的 UPDATE 命令試圖更新已刪除或不包含 DataSet 中原始值的行時,該命令不會影響任何記錄,并且會引發 DBConcurrencyException。

如果要使 UPDATE 或 DELETE 在不考慮原始值的情況下完成,必須為 DataAdapter 顯式設置 UpdateCommand,而不依賴自動命令生成。

責任編輯:田樹 來源: 博客
相關推薦

2009-12-28 15:11:36

ADO.NET專家

2010-01-04 13:16:31

ADO.NET命令

2009-11-03 16:37:10

2009-09-14 13:37:25

LINQ ADO.NE

2011-05-20 11:31:07

ADO.NET

2009-12-30 14:12:53

ADO.NET Fra

2010-01-04 10:48:30

ADO.NET特色

2009-12-21 16:02:48

ADO.NET命令

2009-12-30 16:50:26

ADO.NET事務

2009-11-12 09:51:59

ADO.NET結構

2009-11-12 13:53:27

ADO.NET Sel

2009-12-18 14:37:56

ADO.NET模型

2009-09-09 10:23:59

ADO.NET連接

2011-06-02 09:39:29

ADO.NET

2009-11-11 14:27:32

ADO.NET函數

2009-11-04 12:45:33

ADO.NET Dat

2009-11-03 17:25:59

ADO.NET編程技巧

2009-11-12 10:32:47

ADO.NET技術

2009-11-12 14:37:26

ADO.NET結構

2009-10-29 13:34:01

ADO.NET對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日韩视频 | 老熟女毛片 | 91毛片在线观看 | 国产真实乱全部视频 | 亚洲欧美日韩精品久久亚洲区 | 久久久久99 | 精品一级电影 | 欧美日韩精品一区 | 亚洲欧美综合 | 色就是色欧美 | 99在线精品视频 | 男女免费视频网站 | 欧美成人激情视频 | 国产日韩一区二区 | 成人婷婷 | 超碰日本 | 日韩精品免费视频 | 三级黄视频在线观看 | 91麻豆蜜桃一区二区三区 | 美女视频黄的免费 | 欧美 日韩 国产 成人 | 国产精品亚洲成在人线 | www.中文字幕.com | 第一区在线观看免费国语入口 | 久久久久亚洲 | 欧美久久精品 | 伊人在线 | 国产午夜精品一区二区三区嫩草 | 操人网站| 在线观看亚洲 | 日韩精品在线看 | 亚洲成人二区 | 国产精品久久久久久久 | 欧美精品一区二区三区四区五区 | 欧美日韩久久久 | 成人小视频在线 | 成人激情视频网 | 久久久久无码国产精品一区 | 欧美在线综合 | 欧美精品一区二区在线观看 | 日韩高清电影 |