LINQ to SQL数据模型像下面这样写LINQ的查询表达式:

当你像这样写LINQ 查询表达式时,LINQ to SQL 模型将会执行必要的动态SQL语句来检索出跟你的查询匹配的产品对象。
在这篇帖子中你将学到,你也可以选择将数据库中的存储过程遇到到你的LINQ to SQL DataContext类中,存储过程会允许你调用它来完成对产品对象的检索功能。

这种数据模型的既能调用动态SQL又能调用存储过程能力是非常强大的,并且在对对象的操作上它提供了强大的灵活性。
在LINQ to SQL中映射和调用存储过程的步骤
在第二部分我讲述了如何用LINQ to SQL orM设计器来生成一个如下的LINQ to SQL类模型:

注意,在上边的LINQ to SQL orM设计器中有两个面板。左侧的面板使我们可以定义映射到我们数据库的数据模型。右侧的面板允许我们有选择的映射存储过程(和自定义的函数)到我们的LINQ to sQL DataContexxt对象,这个映射的存储过程可以允许我们用它来代替动态生成的SQL语句来从该数据模型对象中查找数据。
如何将存储过程映射到LINQ to SQL DataContext
为了映射存储过程到我们的DataContext类中,让我们产生到VS2008中的Server Explorer窗口,看一下在数据库中的存储过程:

我们可以双击存储过程来打开和编辑它们,例如,下面是在Northwind中的“CustOrderHist"的存储过程:

为了将上面的存储过程映射到我们的LINQ to SQL DataContext中,我们通过用拖放的方式将它从Server Explorer中拖到我们的LINQ to SQL orM设计器中。这将自动地在LINQ to SQL DataContext类中生成如下的一个新方法:

默认情况下,在DataContext为上生成的这个方法的方法名是和存储过程的名称是一样的,并且这个方法的返回值类型的命名方式是“[存储过程名称]结果”。例如,上面的存储过程将会返回一个"CustOrderHistResult"对象序列。我们可以选择将这个方法名进行更改:在设计器上选中它,用属性窗口来对它进行重命名。
如何调用我们新映射的存储过程
做完了上面的映射存储过程到我们的DataContext类的第一步之后,用它来进行编程的方式进行检索数据就很容易了。我们所做的只是来调用映射到我们的DataContext类上的方法来获取从存储过程中返回的一个强类型的序列。

除了像上面那样对结果集进行遍历之外,我还可以将结果集绑定到UI上并将它们显示出来。例如,下面的代码将我们的存储过程的结果集绑定到了<asp:gridview>控件上:

将存储过程的返回值类型映射到数据模型类上
在上面的"CustOrderHist"例子中,存储过程返回的是一个产品历史记录的序列,这个结果包含了两列数据:Product的ProuctName,客户对那条产品记录下的订单记录的总数。LINQ to SQL设计器自动地定义了一个"CustOrderHistResult"类来展示该结果。
存储过程映射到了一个我们已经在LINQ to sQL设计器中定义好的数据模型类中(例如,一个已经存在的Product或者Order实体类)。
例如,假设在数据库中我们有一个"GetProductByCategory"存储过程,它返回如下的产品信息:

像以前那样,我们通过拖放的方式将存储过程拖到我们的LINq to sql 设计器上来在我们的DataContext中生成一个"GetProductsByCategory"方法。这次不是将这个存储过程拖到设计器任意位置,而是将它拖到在数据模型设计器中已经存在的“Product"类上:

将存储过程拖到Product类上的这种行为就告诉了linq to sql 设计器,使"GetProductCategory"方法的返回一个“Product"对象:
分享到:
相关推荐
在本篇总结中,我们将重点讨论如何通过LINQ to SQL来调用存储过程和函数,并进行相关的数据操作。 ** LINQ to SQL 基础知识 ** LINQ to SQL 是.NET Framework 3.5引入的一种ORM(对象关系映射)技术,它提供了一种...
- **UDF与存储过程对比**:虽然两者都能实现复杂的数据处理逻辑,但存储过程更侧重于执行一系列SQL操作,而UDF则专注于单一的功能实现。在Linq To Sql中,两者都可以被方便地调用。 #### 6. Linq To Sql进阶系列...
8. **存储过程与函数**:展示如何调用数据库中的存储过程和用户定义函数,并将它们集成到Linq查询中。 9. **异步查询**:介绍如何利用异步编程来优化性能,特别是在处理大量数据时。 10. **性能优化**:讨论Linq ...
LINQ To SQL 是 Visual Studio 2008 和 .NET Framework 3.5 的一个重要组成部分,它极大地简化了数据库操作的过程。通过掌握 LINQ To SQL 的基础概念和使用方法,开发者可以更高效地进行数据处理任务,从而提升应用...
20. **Stored Procedures**:使用 LINQ to SQL 调用数据库存储过程,并将结果映射到对象。 21. **User-Defined Functions**:创建和使用自定义函数以扩展 LINQ to SQL 的功能。 22. **DataContext**:`DataContext...
Linq to Sql 是 LINQ (Language Integrated Query) 的一个组成部分,通过它可以将数据库对象映射为 .NET 对象,从而简化数据操作。 1. **隐含类型局部变量**: 使用 `var` 关键字可以避免在声明变量时明确指定类型...
"DAL"文件夹可能包含了数据访问组件,如ADO.NET实体、存储过程或者Linq to SQL的数据上下文(DataContext)文件。Linq to SQL是.NET框架中的一个ORM(对象关系映射)工具,它允许开发者使用C#或VB.NET的查询语法直接...
6. **存储过程与函数调用**:虽然LINQ主要关注直接的查询语句,但它也支持对数据库存储过程和用户定义函数的调用,这在处理复杂业务逻辑时非常有用。 7. **性能优化**:通过批处理、缓存策略和适当的数据访问模式,...
**Linq to SQL** 是微软推出的一种用于在.NET框架中操作关系数据库的简化技术,它允许开发者使用强类型对象模型来查询SQL数据库。本教程旨在引导你逐步掌握Linq to SQL的基本概念、语法和实际应用。 ### 1. Linq...
在ORM中,关系数据模型中的表对应LINQ to SQL对象模型中的实体类,表的字段对应类成员,外键关系对应关联,存储过程或函数对应对象模型中的方法。这种映射方式使得.NET对象可以与数据库表直接关联,从而实现数据的...
LINQ to SQL 是 .NET Framework 提供的一个强大的数据访问技术,它允许开发者使用 C# 或 VB.NET 语言的语法直接对SQL Server数据库进行操作。本文将深入探讨这些语句,帮助开发人员更好地理解和应用LINQ to SQL。 1...
LINQ to SQL简化了数据库操作,使代码更易读、更易于维护,但请注意,对于复杂的SQL操作,可能需要使用存储过程或自定义SQL查询。在实际项目中,结合Entity Framework或其他ORM框架,可以更好地管理数据库交互。
LINQ to SQL 是一种对象关系映射(ORM)技术,允许开发人员使用 LINQ 查询语法来与 SQL Server 数据库进行交互。它不仅简化了数据库操作,还提高了开发效率。然而,由于其背后的机制较为复杂,不当使用可能会导致...
- 不支持复杂的SQL操作:如自定义存储过程、高级聚合函数等。 尽管LINQ to SQL在某些方面可能不如更现代的ORM工具强大,但对于简单的数据库操作和快速原型开发,它仍是一个高效且易于学习的选择。通过理解并熟练...
这个详细的教程将引导你逐步了解并掌握LINQ to SQL的基本概念、用法和高级特性,通过实践,你将能够熟练地在ASP.NET项目中运用LINQ to SQL进行数据库操作。通过阅读和学习,你将能够更好地理解和利用这种强大的数据...
首先,"Linq to sql公共方法资源基类"通常是指一个设计模式,其中包含了一系列可以应用于多种数据库操作的通用方法。这些方法可能包括插入、更新、删除记录,执行自定义SQL语句,或者进行复杂的查询操作。通过创建...