演练:创建 Adventure Works 销售模型和查询 (Visual Basic)
本演练提供了复杂性最低的基本端对端 LINQ to Entities 方案。您将创建 AdventureWorks 销售模型,其中包含基于 AdventureWorks 示例数据库中的 Address、Contact、Product、SalesOrderHeader 和 SalesOrderDetail 表的实体和关联。然后,您将创建一个简单查询来列出 AdventureWorks 库存中的所有红色产品。
系统必备
本演练需要 AdventureWorks 示例数据库。如果您的开发计算机上没有此数据库,您可以从 CodePlex 网站的 Microsoft SQL Server Community & Samples(Microsoft SQL Server 社区和示例)网页上下载该数据库。
概述
本演练由 4 项主要任务组成:
在 Visual Studio 2008 中创建 LINQ to Entities 解决方案。
创建 AdventureWorks 销售模型。
创建对该销售模型运行的简单查询。
执行查询并观察结果。
创建 LINQ to Entities 解决方案
在这第一项任务中,您将创建一个 Visual Studio 解决方案,其中包含生成和运行 LINQ to Entities 项目所必需的引用。
创建 Visual Basic LINQ to Entities 解决方案
在 Visual Studio “文件”菜单上,指向“新建”,再单击**“项目”**。
在**“新建项目”对话框的“项目类型”窗格中,单击“Visual Basic”**。
从下拉菜单中选择**“.NET Framework 3.5”**。
在**“模板”窗格中,单击“控制台应用程序”**。
在**“名称”框中,键入“LinqToEntitiesConsoleApp”**。
在**“位置”框中,选择用于存储项目文件的位置,再单击“确定”**。
在**“项目”菜单上,单击“添加引用”,单击“.NET”选项卡,单击“System.Data.Entity”程序集,然后单击“确定”**。
在源代码文件中添加用于 System.Data.Objects 命名空间的 using 指令。
创建 AdventureWorks 销售模型
在此任务中,您将使用 实体数据模型 向导创建 AdventureWorks 销售模型,并在项目中引用该模型。
创建并引用 AdventureWorks 销售模型
在**“项目”菜单上单击“添加新项”**
在**“添加新项”对话框的“模板”窗格中,选择“ADO.NET 实体数据模型”。将模型命名为“AdventureWorksSalesModel”,然后单击“添加”**。
在**“选择模型内容”对话框中,选择“从数据库生成”,然后单击“下一步”**。
在**“选择您的数据连接”**窗口中,从列表中选择现有 AdventureWorks 连接,或者创建一个到具有 AdventureWorks 示例数据库的 SQL Server 实例的连接。
将 App.Config 中的实体连接设置另存为**“AdventureWorksEntities”,然后单击“下一步”**。
在**“选择数据库对象”对话框中,清除所有对象,展开“表”**,然后选择以下表对象:
Address (Person)
Contact (Person)
Product (Production)
SalesOrderDetail (Sales)
SalesOrderHeader (Sales)
将此模型命名空间命名为**“AdventureSalesWorksModel”,然后单击“完成”**。
**“模型浏览器”视图打开,其中显示 AdventureWorks 销售模型中的实体。单击保存按钮,然后选择“Module1.vb”**选项卡转回源代码。
向源文件添加用于**“AdventureWorksSalesModel”**的 Imports 语句。
创建简单查询
此步骤中,您将创建一个查询来查找 AdventureWorks 库存中的红色产品。如果将查询设计为返回一系列值,则查询变量仅存储查询命令。查询的实际执行将推迟到在 For Each 循环中循环访问查询变量之后进行。这种方法称为“延迟执行”**。有关更多信息,请参见查询执行。
创建简单查询
- 将下面的代码键入或粘贴到
Main
方法中。
Using AWEntities As New AdventureWorksEntities()
Dim products = AWEntities.Product
Dim query = From product In products _
Where product.Color = "Red" _
Select product
For Each product As Product In query
Console.WriteLine("Name: {0}", product.Name)
Console.WriteLine("Product number: {0}", product.ProductNumber)
Console.WriteLine("List price: ${0}", product.ListPrice)
Console.WriteLine("")
Next
End Using
' Prevent the console window from closing.
Console.WriteLine("Hit Enter...")
Console.Read()
执行查询
在此步骤中,您将实际执行查询。您在前面步骤中创建的查询表达式只有在需要结果时才会进行计算。开始 For Each 循环访问时,将对 AdventureWorks 销售模型执行查询,并使结果具体化。
执行查询
按 F5 以调试模式执行应用程序。
查询结果应出现在控制台窗口中。
在控制台窗口中按 Enter 关闭应用程序。