ADO.NET Entity入门的程序 #3(自己动手写)--LINQ-to-SQL、EntitySQL、查询产生器方法(Query builder)三种语法
http://www.dotblogs.com.tw/mis2000lab/archive/2010/10/27/entity_manual_3.aspx
资料来源: http://msdn.microsoft.com/zh-tw/library/bb738512.aspx
HOW TO:执行传回匿名型别集合的查询 (EntityFramework)
微软的范例有提供 C#语法的范例了,
所以我只在此补充 VB范例。
这三个范例的执行结果都一样,只是采用了三种不同的查询语法而已。
HTML画面上都是空白的,纯粹用手写「后置程序代码」
最上方的「NameSpace」都一样喔,我先写在此
Imports System.Data
Imports System.Data.Objects
Imports System.Data.Objects.DataClasses
'==============================
Imports testModel '==自己做的 Entity Model(请用 VS 2008/2010 先做好)
'==============================
第一种方法,LINQ-to-Entity
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.Load
Using u_context As New testEntities
Dim u_testAs ObjectSet(Of test) = u_context.test
'== 以下是 LINQ to Entities 范例。
Dim t_Query1 = From t In u_test _
Select New With _
{ _
.TestId = t.id, _
.TestTitle = t.title _
} '-- 将取出的属性(字段)名称,修改成其它名字
For Eachresult In t_Query1 '-- 请注意result的数据型态!!
Response.Write(result.TestId & "----" & result.TestTitle)
Response.Write("<hr>")
Next
End Using
End Sub
第二种方法,Entity SQL
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.Load
Using u_context As New testEntities
'== 以下是 EntitiesSQL范例。
Dim myQueryString As String = "SELECT t.id, t.title FROMtestEntities.test as t"
Try
'== 虽然 ObjectQuery(Of T)通常是实体(Entity) 类型,
'== 但是它也可以是「DbDataRecord型别」作为匿名型别的投影。
For Each dr As System.Data.Common.DbDataRecordIn New ObjectQuery(Of System.Data.Common.DbDataRecord)(myQueryString, u_context)
Response.Write(dr(0) & "----" & dr(1))
Response.Write("<hr>")
Next
Catchex As EntityException
Response.Write(ex.ToString())
Catchex1 As InvalidOperationException
Response.Write(ex1.ToString())
End Try
End Using
End Sub
第三种方法,查询产生器(Query builder)方法
Protected Sub Page_Load(ByVal sender As Object, ByVale As System.EventArgs) Handles Me.Load
Using u_context As New testEntities
'== 以下是 查询产生器方法(Query builder methods)范例。
Dim myQueryAs ObjectQuery(Of System.Data.Common.DbDataRecord)= u_context.test.Select("it.id, it.title")
'== 如果要取出前十笔记录,请写成 u_context.test.Select("it.id, it.title").Top(10)
Try
For Each dr As System.Data.Common.DbDataRecord In myQuery
Response.Write(dr(0) & "----" & dr(1))
Response.Write("<hr>")
Next
Catchex As EntityException
Response.Write(ex.ToString())
Catchex1 As InvalidOperationException
Response.Write(ex1.ToString())
End Try
End Using
End Sub
点部落上面果真卧虎藏龙, David网友写的一系列文章,很值得一读。
http://www.dotblogs.com.tw/asdtey/category/2934.aspx
真是相见恨晚!不看会搥心肝喔!
上面三种查询语法,微软有提供一个好用的查询工具,对于我们学习很有帮助!!