VB9.0新特性之LINQ(四) - LINQ to SQL

时间:2021-12-08 13:59:05

经过前面几篇“长片累牍”的介绍,大家应该看得很累,毕竟,那么多的代码,又没有什么实在感——LINQ来LINQ去,都没有跟数据库挂上勾。呵呵,本文里,我们将使用到真正的数据库,而且,在本片里,大家可以看到比较多的图片了——虽然,只是屏幕截图而已VB9.0新特性之LINQ(四) - LINQ to SQL。本片介绍怎样应用LINQ与SQL Server数据库连接并查询出数据。

首先,给出一段数据库脚本,把数据库建立起来,并且插入测试数据——是不是有一种被骗的感觉?又是大片的代码^_^先忍一忍,忍忍,贴到查询分析器里运行就行了。注意根据自己的机器情况,修正一下数据库文件创建的位置。

 

 

VB9.0新特性之LINQ(四) - LINQ to SQLVB9.0新特性之LINQ(四) - LINQ to SQLCode

 

运行完,就应该可以看到相应的数据已经在数据库中了:

VB9.0新特性之LINQ(四) - LINQ to SQL

 

好,准备工作完成,接下来,我们来按部就搬的进行LINQ TO SQL。

第一步,建立数据库连接。

打开VS中的服务器窗口,右击选择“添加连接...”,填写SQL服务器信息,测试连接,成功,OK~见下图:

VB9.0新特性之LINQ(四) - LINQ to SQL

VB9.0新特性之LINQ(四) - LINQ to SQL

 

第二步 创建LINQ to SQL类:

新建一个Console Application项目,打开项目窗口,在项目上右击,点击“添加新项目”,然后选择“LINQ to SQL Classes”:

VB9.0新特性之LINQ(四) - LINQ to SQL

新建以后,便会建立一个OR设计器,然后,再次打开服务器窗口,打开刚才建立的连接,从右边把表格“拖”进主工作区,一个表到对象的映射就做完了。

VB9.0新特性之LINQ(四) - LINQ to SQL

 

第三步:查询

切换到Module1.vb,输入以下代码:

 

 1 VB9.0新特性之LINQ(四) - LINQ to SQLVB9.0新特性之LINQ(四) - LINQ to SQL Module Module1
 2VB9.0新特性之LINQ(四) - LINQ to SQLVB9.0新特性之LINQ(四) - LINQ to SQL    Sub Main()
 3VB9.0新特性之LINQ(四) - LINQ to SQL        Dim db = New NbStorageDataContext()
 4VB9.0新特性之LINQ(四) - LINQ to SQL        Dim var = From laptop In db.NotebookStorages
 5VB9.0新特性之LINQ(四) - LINQ to SQL
 6VB9.0新特性之LINQ(四) - LINQ to SQL        For Each alaptop In var
 7VB9.0新特性之LINQ(四) - LINQ to SQL            Console.WriteLine(alaptop.ToString())
 8VB9.0新特性之LINQ(四) - LINQ to SQL        Next
 9VB9.0新特性之LINQ(四) - LINQ to SQL    End Sub

10VB9.0新特性之LINQ(四) - LINQ to SQLEnd Module

让我们来仔细看一下本文中目前为止唯一出现的VB.NET代码吧:-)

首先,第3行,我们声明了一个NbStorageDataContext类型的对象db。呀?NbStorageDataContext是哪儿冒出来的呀?呵呵,那是第二步里创建的LINQ to SQL的类的名称+DataContext形成的一个类。用它创建的对象db就像一个数据库副本。当然,大家到属性窗口里找一下就知道,这个只是默认名称而已,其值是可以修改的。这一行,我们完成了LINQ查询的Step1,即确立了数据源。

第4行里,In后面带出的数据源是db.NotebookStorages,指向了NotebookStorage表中的数据的集合。这一行完成了LINQ查询中的Step2,设计好了查询。这个时候,数据尚未真正取出。

第6-8行,当然还是老套路啦:执行查询,取出数据,并且输出到屏幕上。

大家如果照着本文一步一步做,贴上这一段代码后,可以看到输出结果………………完全不是预期的那样VB9.0新特性之LINQ(四) - LINQ to SQL

呵呵,其实查询本身到这里已经没有问题了。输出结果不一样是因为alaptop.ToString()输出的东西不是我们所想要的啦。还记得在Notebook类里,我们重写的ToString()方法以获得想要的输出内容,我们甚至还对String作了扩展方法来增加输出的格式(不知道?请回顾前文!^_^)。在这里,我们可以重写NotebookStoreage类,注意啊,是单数形式的哦。其实就是表所对应的类。嗯,具体做法是:在OR设计器上右击表,注意,一定要点在对应的表上哦,不然,后果自负!然后,选择“代码”,就可以看到一个Partial Class,在这里,我们就可以做一个.ToString()的重写了:

 

1 VB9.0新特性之LINQ(四) - LINQ to SQLVB9.0新特性之LINQ(四) - LINQ to SQLPartial   Public   Class NotebookStorage
2VB9.0新特性之LINQ(四) - LINQ to SQLVB9.0新特性之LINQ(四) - LINQ to SQL    Public Overrides Function ToString() As String
3VB9.0新特性之LINQ(四) - LINQ to SQL        Return "Laptop " & Me.Brand & "(" & Me.Type & ") is " & Me.Weight.ToString() _
4VB9.0新特性之LINQ(四) - LINQ to SQL        & "kg, and at the price of " & Me.Price.ToString(0.0)
5VB9.0新特性之LINQ(四) - LINQ to SQL    End Function

6VB9.0新特性之LINQ(四) - LINQ to SQLEnd Class

 

当当当当当当当~麻烦大家再次按下F5,看看,有没有得到对应的查询结果——是不是跟预想中的一模一样啊~

 

让我们来小结一下创建LINQ to SQL的三个步骤——又是三步:

1. 建立数据库连接

2. 创建LINQ to SQL类

3. 查询

通过这三步,大家就应该都能够顺利的从SQL SERVER数据库中获取数据了。

再让偶来啰嗦三句以结束本文。上一句这一句和下一句。本文到此结束,谢谢大家的捧场VB9.0新特性之LINQ(四) - LINQ to SQL~