ADO.NET调用自从出道的时候,总是不好使。为什么大家针对数据库访问,习惯性的想到SQL;而在ADO.NET调用的时候,大家已经对LINQ有所了解,因此,针对实体的访问。
相对于SQL,eSQL提供了对实体的很好的支持——这是SQL所不具备的(历史原因 ^_^)。SQL查询出来的是行,ADO.NET调用则可以直接查询出实体集。eSQL直接支持EDM中的类型,而SQL不支持(废话,有SQL的时候,EDM还没有出世呢)……
相对于自己的哥哥——LinQ,eSQL显得更为灵活。由于eSQL的查询语句是个字符串,因此,其十分易于处理。举个简单的例子,如果我要写一个方法,传入排序的属性名称,返回一个按照此属性排序好的实体集,要用LinQ实现,恐怕有点麻烦,因为,其ADO.NET调用后面,需要跟一个实体类的属性;然而,在eSQL里,这简单是轻而易举的事,只要写上一个eSQL语句,把排序位置留为{0},然后进行字符串替换,这一功能就完成了——好像比较难说明白,没有关系,后面的示例代码里有相关的部分。
总之,一句话,eSQL是个好东东——因为它是本文介绍的主角^_^。至于到底是不是那么一回事儿,ADO.NET调用大家可以试一下本文的示例,然后,根据自己的理解来酌情运用。
- '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接口:
首先,通过预先配置好的连接字符串,创建一个EntityConnection类型的连接ADO.NET调用;
然后,定义查询语句#t#
步,通过连接和查询语句,创建一个EntityCommand的对象cmd;
第四步,打开连接,读取数据。
这一接口形式,更接近于传统的ADO.NET调用形式。