[新手入门]快速学习 ADO.NET Entity Framework系列文章 #3 -- LINQ-to-SQL、EntitySQL、查询产生器方法(Query builder)三种语法...

*爱你&永不变心* 提交于 2019-11-26 23:09:55

 

 

 

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

真是相见恨晚!不看会搥心肝喔!

 

上面三种查询语法,微软有提供一个好用的查询工具,对于我们学习很有帮助!!

ADO.Net Entity Framework : (九) 推荐学习EF必备工具EFQuerySamples...

转载于:https://www.cnblogs.com/mis2000lab/archive/2010/10/27/Entity_Manual_3.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!