本演练提供了复杂性最小的基本端对端 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 方法中。
C#
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 关闭应用程序。
另请参见