注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lucifer 的博客

网易英超评论专栏

 
 
 

日志

 
 
 
 

EXEC StoredProcedure in LINQ  

2008-03-13 18:09:57|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在使用SqlMetal生成LINQDBML时,如果sp中执行的是sp_executesql,则无法正确出现entity class

如: DECLARE @Sql nvarchar(max)

      SET @Sql = 'SELECT [UserId], [UserGuid], [UserName], [UserPassword], [UserEmail], [UserStatus] FROM [User]'

      EXEC sp_executesql @Sql

 

结果就会出现LINQ会认为这个存储过程的返回结果为一个Int,而不是一个结果集。 这是为什么呢?怎样才能显示结果集?

 

这个问题来源于一个误解,那就是一个你认为你的存储过程在用LINQ TO SQL 生成的Entity类里面应该会返回一个结果集,结果却返回了Int

 

其实在储存过程的最后一句中  EXEC sp_executesql @Sql本身就是会返回一个int作为结果,而不是结果集,所以在LINQ当中这个存储过程返回int结果是正常的。

 

参照:

Return Code Values

0 (success) or non-zero (failure)

详细请参照:http://msdn2.microsoft.com/en-us/library/ms188001.aspx

 

 

在存储过程当中使用EXEC sp_executesql @Sql的话,在生成的LINQ entity当中其返回值将会是int类型。如果你想让它返回结果集的话,可以将你的SELECT的数据库查询语句放在一个存储过程A当中,然后在另外一个存储过程B中去执行存储过程AEXEC StoredProcedureA)。

这样的话,B存储过程就会返回A存储过程的SQL语句所取得的结果集了。在LINQ生成的entity class里面也会返回你想要的结果集。

 

  评论这张
 
阅读(275)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017