ADO.NET Entity入門的程式 #3(自己動手寫)--LINQ-to-SQL、EntitySQL、查詢產生器方法(Query builder)三種語法

資料來源: http://msdn.microsoft.com/zh-tw/library/bb738512.aspx
HOW TO:執行傳回匿名型別集合的查詢 (Entity Framework)

微軟的範例有提供 C#語法的範例了,

所以我只在此補充 VB範例。



當您要閱讀這篇文章之前,建議您先看過這系列的相關文章,循序漸進。

(以前發表過的 Entity相關文章)

http://www.dotblogs.com.tw/mis2000lab/Tags/ADO.NET%20Entity/default.aspx

 

 

本文也作為「下集(ASP.NET專題實務 II -- 範例集與 4.0新功能)」的

      第十五章  ADO.NET Entity framework補充範例

 

 

本文已經收錄在「下集(第二版)」 2011年推出的黑皮書裡面,

 

=============================================================================

資料來源: http://msdn.microsoft.com/zh-tw/library/bb738512.aspx

HOW TO:執行傳回匿名型別集合的查詢 (Entity Framework)

    微軟的範例有提供 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_test As 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 Each result 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
            '== 以下是 Entities SQL範例。

            Dim myQueryString As String = "SELECT t.id, t.title FROM testEntities.test as t"

            Try
                '== 雖然 ObjectQuery(Of T)通常是實體 (Entity) 類型,
                '== 但是它也可以是「DbDataRecord型別」作為匿名型別的投影。

                For Each dr As System.Data.Common.DbDataRecord In New ObjectQuery(Of System.Data.Common.DbDataRecord)(myQueryString, u_context)
                       Response.Write(dr(0) & "----" & dr(1))
                       Response.Write("<hr>")
                Next

            Catch ex As EntityException
                    Response.Write(ex.ToString())
            Catch ex1 As InvalidOperationException
                    Response.Write(ex1.ToString())
            End Try

        End Using

End Sub

 

 

第三種方法,查詢產生器(Query builder)方法

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Using u_context As New testEntities

            '== 以下是 查詢產生器方法(Query builder methods)範例。

            Dim myQuery As 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

            Catch ex As EntityException
                    Response.Write(ex.ToString())
            Catch ex1 As InvalidOperationException
                    Response.Write(ex1.ToString())
            End Try

        End Using

    End Sub

 

==================================================================

 

 

點部落上面果真臥虎藏龍, David網友寫的一系列文章,很值得一讀。

http://www.dotblogs.com.tw/asdtey/category/2934.aspx

真是相見恨晚!不看會搥心肝喔!

 

上面三種查詢語法,微軟有提供一個好用的查詢工具,對於我們學習很有幫助!!

ADO.Net Entity Framework : (九) 推薦學習EF必備工具EFQuerySamples ...

 

 

 

 

 

 

 

 

 

今日值班正妹,大元

 

大元」的圖片搜尋結果

 

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估