Linq to sql:普通存储过程
来源:互联网 发布:淘宝客服在哪里应聘 编辑:程序博客网 时间:2024/04/28 08:42
首先在查询分析器运行下面的代码来创建一个存储过程:
create proc sp_singleresultset
as
set nocount on
select * from customers
然后打开 IDE 的服务器资源管理器,之前我们从表中拖动表到 dbml 设计视图,这次我
们从存储过程中找到刚才创建的存储过程,然后拖动到设计视图。在方法面板中可以看到已
经创建了一个 sp_singleresultset 的方法。
然后打开 Northwind.designer.cs,可以找到下面的代码:
[Function(Name="dbo.sp_singleresultset")]
public ISingleResult<sp_singleresultsetResult> sp_singleresultset()
{
IExecuteResult result = this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((ISingleResult<sp_singleresultsetResult>)(result.ReturnValue));
}
我们可以发现,IDE 为这个存储过程单独生成了返回结果集的实体定义,你可能会觉得很奇
怪,IDE 怎么知道这个存储过程将会返回哪些数据那?其实,在把存储过程拖拽入 dbml 设
计视图的时候,IDE 就执行了类似下面的命令:
SET FMTONLY ON;
exec Northwind.dbo.sp_singleresultset
SET FMTONLY OFF;
这样就可以直接获取存储过程返回的元数据而无须执行存储过程。
其实我们存储过程返回的就是顾客表的数据,如果你觉得为存储过程单独设置结果集实
体有些浪费的话可以在存储过程的属性窗口中调整返回类型从“自动生成的类型”到
Customer,不过以后你只能通过删除方法面板中的存储过程,然后重新添加来还原到“自动
生成的类型”。下面,我们可以写如下的 Linq to object 代码进行查询:
var 单结果集存储过程 =
from c in ctx.sp_singleresultset()
where c.CustomerID.StartsWith("A")
select c;
在这里确实是 Linq to object 的,因为查询句法不会被整句翻译成 SQL,而是从存储过
程的返回对象中再去对对象进行查询。SQL 代码如下:
EXEC @RETURN_VALUE = [dbo].[sp_singleresultset]
create proc sp_singleresultset
as
set nocount on
select * from customers
然后打开 IDE 的服务器资源管理器,之前我们从表中拖动表到 dbml 设计视图,这次我
们从存储过程中找到刚才创建的存储过程,然后拖动到设计视图。在方法面板中可以看到已
经创建了一个 sp_singleresultset 的方法。
然后打开 Northwind.designer.cs,可以找到下面的代码:
[Function(Name="dbo.sp_singleresultset")]
public ISingleResult<sp_singleresultsetResult> sp_singleresultset()
{
IExecuteResult result = this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((ISingleResult<sp_singleresultsetResult>)(result.ReturnValue));
}
我们可以发现,IDE 为这个存储过程单独生成了返回结果集的实体定义,你可能会觉得很奇
怪,IDE 怎么知道这个存储过程将会返回哪些数据那?其实,在把存储过程拖拽入 dbml 设
计视图的时候,IDE 就执行了类似下面的命令:
SET FMTONLY ON;
exec Northwind.dbo.sp_singleresultset
SET FMTONLY OFF;
这样就可以直接获取存储过程返回的元数据而无须执行存储过程。
其实我们存储过程返回的就是顾客表的数据,如果你觉得为存储过程单独设置结果集实
体有些浪费的话可以在存储过程的属性窗口中调整返回类型从“自动生成的类型”到
Customer,不过以后你只能通过删除方法面板中的存储过程,然后重新添加来还原到“自动
生成的类型”。下面,我们可以写如下的 Linq to object 代码进行查询:
var 单结果集存储过程 =
from c in ctx.sp_singleresultset()
where c.CustomerID.StartsWith("A")
select c;
在这里确实是 Linq to object 的,因为查询句法不会被整句翻译成 SQL,而是从存储过
程的返回对象中再去对对象进行查询。SQL 代码如下:
EXEC @RETURN_VALUE = [dbo].[sp_singleresultset]
-- @RETURN_VALUE: Output Int32 (Size = 0; Prec = 0; Scale = 0) [
- Linq to sql:普通存储过程
- linq to sql 存储过程
- linq to sql 存储过程
- linq to sql 应用存储过程
- sql to linq 之存储过程偏
- LINQ to SQL之存储过程
- Linq to Sql(五):存储过程
- LINQ to SQL语句之存储过程
- Linq to sql(五):存储过程
- Linq to sql(五):存储过程
- 一步一步学Linq to sql(五):存储过程
- 一步一步学Linq to sql(五):存储过程
- 一步一步学Linq to sql(五):存储过程
- LINQ to SQL语句(20)之存储过程
- Linq to Sql 学习系列之五 存储过程
- LINQ to SQL 查询数据库和使用存储过程
- 一步一步学Linq to sql(五):存储过程
- 一步一步学Linq to sql(五):存储过程
- cnComm类(串口类)的使用方法
- iOS界面-仿网易新闻左侧抽屉式交互 续(添加新闻内容页和评论页手势)
- ASP.NET MVC中权限控制的简单实现
- js冒泡法和数组转换成字符串
- Android学习笔记(四)layout_weight
- Linq to sql:普通存储过程
- try catch throw
- OpenFire的Connection Manager插件环境搭建
- java的中间缓存变量
- Android图片处理(Matrix 和 ColorMatrix)
- 应用Lucene.net建立全文索引引擎
- SQL Server 2005性能排错
- SHELL脚本获取某天的上一周日期(星期一为第一天)
- android开发常见疑难杂症解决方案大汇总