`
jiasongmao
  • 浏览: 647686 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

linq to sql 操作存储过程、函数总结(一)

    博客分类:
  • .NET
阅读更多

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语句(1)之...LINQ to SQL语句(20)之存储过程 LINQ to SQL语句(21)之用户定义函数 LINQ to SQL语句(22)之DataContext LINQ to SQL语句(23)之动态查询 LINQ to SQL语句(24)之视图 LINQ to SQL语句(25)之继承

    linq to sql 操作存储过程、函数总结(二)

    NULL 博文链接:https://code.iteye.com/blog/510745

    LINQ_to_SQL语法及实例大全

    LINQ to SQL语句(20)之存储过程 63 1.标量返回 63 2.单一结 果集 64 3.多个可 能形状的单一结果集 65 4.多个结果集 70 5.带输出参数 79 LINQ to SQL语句(21)之用户定义函数 80 1.在Select中使用用户定义的标量函数 ...

    LINQ 实战 7/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 1/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 3/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 4/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 2/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 11/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 5/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 6/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 8/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 10/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 实战 9/11

    本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ...

    LINQ 的标准查询操作符

    然后,各种 LINQ 提供程序,如 LINQ to Objects(可利用它根据对象层次结构编写查询)和 LINQ to Entities(可利用它根据实体框架的概念模型编写查询)可根据代表数据存储的细微差别来有效处理这些查询。 除强类型化...

    LINQPad 5.25.00 高级版(自动完成,代码格式化)

    LINQPad 也是一个很好的学习LINQ的工具,包含《C# 3.0 in a Nutshell》一书中200个示例,可以使用LINQPad感受LINQ的超酷功能和函数编程。 编写一条简单的查询语句,可以立即看到查询的结果,在此测试是编写的LINQ...

    ASP.NET 控件的使用

    16.1.4 绑定到LINQ to SQL查询 502 16.1.5 绑定到Web服务 503 16.2 使用ObjectDataSource控件与参数 506 16.2.1 使用不同的参数类型 509 16.2.2 作为参数传递对象 511 16.3 使用ObjectDataSource控件分页、排序和...

    ASP.NET.4揭秘

    20.3.1 linq to objects与linq to sql741 20.3.2 使用linq to sql进行选择742 20.3.3 使用linq to sql进行插入748 20.3.4 使用linq to sql进行更新751 20.3.5 使用linq to sql进行删除754 20.3.6 动态查询755 20.3.7...

Global site tag (gtag.js) - Google Analytics