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

本文介绍了使用ADO.NET Entity Framework进行数据查询的三种方法:LINQ-to-Entity、EntitySQL和查询产生器方法。通过具体代码示例展示了如何在ASP.NET页面中执行返回匿名类型的查询,并比较了不同查询语法的特点。

 

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值