演练:创建 Adventure Works 销售模型和查询 (C#)
本演练提供了复杂性最小的基本端对端 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 项目所必需的引用。
创建 C# LINQ to Entities 解决方案
在 Visual Studio “文件”菜单上,指向“新建”,再单击**“项目”**。
在**“新建项目”对话框的“项目类型”窗格中,单击“Visual C#”**。
从下拉菜单中选择**“.NET Framework 3.5”**。
在**“模板”窗格中,单击“控制台应用程序”**。
在**“名称”框中,键入“LinqToEntitesConsoleApp”**。
在**“位置”框中,选择用于存储项目文件的位置,再单击“确定”**。
在**“项目”菜单上,单击“添加引用”,单击“.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 销售模型中的实体。单击保存按钮,然后选择“Program.cs”**选项卡转回源代码。
在源文件中添加用于**“AdventureWorksSalesModel”**的 using 语句。
创建简单查询
此步骤中,您将创建一个查询来查找 AdventureWorks 库存中的红色产品。如果将查询设计为返回一系列值,则查询变量仅存储查询命令。查询的实际执行将推迟到在 foreach 循环中循环访问查询变量之后进行。这种方法称为“延迟执行”**。有关更多信息,请参见查询执行。
创建简单查询
- 将下面的代码键入或粘贴到
Main
方法中。
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<Product> products = AWEntities.Product;
IQueryable<Product> query =
from product in products
where product.Color == "Red"
select product;
foreach (Product 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("");
}
}
//Prevent the console window from closing.
Console.WriteLine("Hit Enter...");
Console.Read();
执行查询
在此步骤中,您将实际执行查询。您在前面步骤中创建的查询表达式只有在需要结果时才会进行计算。当您开始 foreach 迭代时,将对 AdventureWorks 销售模型执行查询,并且结果将具体化。
执行查询
按 F5 以调试模式执行应用程序。
查询结果应出现在控制台窗口中。
在控制台窗口中按 Enter 关闭应用程序。