您的位置:首页 > 产品设计 > UI/UE

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

2010-10-27 18:11 1321 查看
[b]ADO.NET Entity入门的程序 #3(自己动手写)--LINQ-to-SQL、EntitySQL、查询产生器方法(Query builder)三种语法[/b]

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...

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐