輸入ADO.NET調(diào)用使用注意事項(xiàng)
ADO.NET調(diào)用自從出道的時(shí)候,總是不好使。為什么大家針對(duì)數(shù)據(jù)庫訪問,習(xí)慣性的想到SQL;而在ADO.NET調(diào)用的時(shí)候,大家已經(jīng)對(duì)LINQ有所了解,因此,針對(duì)實(shí)體的訪問。
相對(duì)于SQL,eSQL提供了對(duì)實(shí)體的很好的支持——這是SQL所不具備的(歷史原因 ^_^)。SQL查詢出來的是行,ADO.NET調(diào)用則可以直接查詢出實(shí)體集。eSQL直接支持EDM中的類型,而SQL不支持(廢話,有SQL的時(shí)候,EDM還沒有出世呢)……
相對(duì)于自己的哥哥——LinQ,eSQL顯得更為靈活。由于eSQL的查詢語句是個(gè)字符串,因此,其十分易于處理。舉個(gè)簡(jiǎn)單的例子,如果我要寫一個(gè)方法,傳入排序的屬性名稱,返回一個(gè)按照此屬性排序好的實(shí)體集,要用LinQ實(shí)現(xiàn),恐怕有點(diǎn)麻煩,因?yàn)?,?FONT>ADO.NET調(diào)用后面,需要跟一個(gè)實(shí)體類的屬性;然而,在eSQL里,這簡(jiǎn)單是輕而易舉的事,只要寫上一個(gè)eSQL語句,把排序位置留為{0},然后進(jìn)行字符串替換,這一功能就完成了——好像比較難說明白,沒有關(guān)系,后面的示例代碼里有相關(guān)的部分。
總之,一句話,eSQL是個(gè)好東東——因?yàn)樗潜疚慕榻B的主角^_^。至于到底是不是那么一回事兒,ADO.NET調(diào)用大家可以試一下本文的示例,然后,根據(jù)自己的理解來酌情運(yùn)用。
- 'Using EntityCommand Interface
- Private Sub QueryESql1()
- Using eConn As New EntityConnection(ConnString)
- Dim myQuery = "{0,1,2,3}"
- Using cmd As New EntityCommand(myQuery, eConn)
- eConn.Open()
- Using reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess) While (reader.Read())
- Console.WriteLine(reader.GetValue(0))
- End While
- End Using
- End Using
- End Using
- End Sub
三、eSQL的使用方法
EF為eSQL提供了兩套接口:Entity Command接口和ObjectQuery接口。讓我們首先來了解一下這兩套接口的使用模式:
Entity Command接口:
首先,通過預(yù)先配置好的連接字符串,創(chuàng)建一個(gè)EntityConnection類型的連接ADO.NET調(diào)用;
然后,定義查詢語句#t#
步,通過連接和查詢語句,創(chuàng)建一個(gè)EntityCommand的對(duì)象cmd;
第四步,打開連接,讀取數(shù)據(jù)。
這一接口形式,更接近于傳統(tǒng)的ADO.NET調(diào)用形式。