首页 新闻 会员 周边 捐助

EF 调用存储过程 接收结果集时怎么接收输出参数?

0
悬赏园豆:10 [已解决问题] 解决于 2016-08-19 14:29
 
//存储过程
create Proc GetUserAccountRe
@ClassId int,
@StuName varchar(20) output with encryption   //输出参数
as
  if(@ClassId is not null and @StuName is null)
    select * from StuClasss join Student on StuClasss.classId=Student.classId where StuClasss.classId=@ClassId
  else if(@ClassId is null and @StuName is not null)
    select * from StuClasss join Student on StuClasss.classId=Student.classId where Student.names=@StuName
  else if(@ClassId is not null and @StuName is not null)
    select * from StuClasss join Student on StuClasss.classId=Student.classId where StuClasss.classId=@ClassId and Student.names=@StuName
  else
    select * from StuClasss join Student on StuClasss.classId=Student.classId

GO





//调用方式
 public List<GetUserAccountRe_Result> SelStuInfo(Expression<Func<T, bool>> wherelambda)
        {
          
            //这里调用的存储过程 接收了一个结果集 但是还有一个返回参数怎么接收了??
            var list=DBContext.GetUserAccountRe(1, "").ToList();
            return list;
        }            

 

小熊vs的主页 小熊vs | 初学一级 | 园豆:20
提问于:2016-08-10 14:29
< >
分享
最佳答案
0

详细代码实现:

            SqlParameter[] parms = new SqlParameter[] { 
                new SqlParameter("@UserID", userID),
                new SqlParameter("@TotalRecord", SqlDbType.Int)
            };
            parms[1].Direction = ParameterDirection.Output;
            using (var context = new XXContext())
            {
                list = context.Database.SqlQuery<Model>("pr_xxx @UserID,@TotalRecord output", parms).ToList();
                totalRecord = Convert.ToInt32(parms[1].Value);
            }

 

收获园豆:10
韩天伟 | 小虾三级 |园豆:697 | 2016-08-10 14:55

赞 一个 var list=DBContext.GetUserAccountRe(1, "三").ToList();哥们知道这样调用怎么就收输出参数吗

小熊vs | 园豆:20 (初学一级) | 2016-08-10 15:02

list = context.Database.SqlQuery<Model>("pr_xxx @UserID,@TotalRecord output",

 

这个list是哪里来的??

小熊vs | 园豆:20 (初学一级) | 2016-08-10 15:06

@小熊vs: 

你这个理解能力,汗颜了

czd890 | 园豆:14488 (专家六级) | 2016-08-10 15:12

@calvinK: 好吧 我理解 0.0

小熊vs | 园豆:20 (初学一级) | 2016-08-10 15:36

@calvinK: 

 

/// <summary>
/// 执行sql (查)
/// </summary>
/// <param name="strSql">sql语句</param>
/// <returns>返回数据列表</returns>
public IQueryable<T> ExcuteSql<T>(string strSql, SqlParameter[] parms) where T : class
{

//怎么把parms加到sql里面执行啊??


return DBContext.Database.SqlQuery<T>(strSql).AsQueryable();

小熊vs | 园豆:20 (初学一级) | 2016-08-10 15:40

@calvinK: 好了 我知道了 ,我又犯二了 0.0

小熊vs | 园豆:20 (初学一级) | 2016-08-10 16:03

@小熊vs: 根据Model 自已定义,我这是主体代码

韩天伟 | 园豆:697 (小虾三级) | 2016-08-10 16:16
其他回答(2)
0

记得好像ef有DataBase.SqlQuery<T>?

顾晓北 | 园豆:10898 (专家六级) | 2016-08-10 14:34

0.0

支持(0) 反对(0) 小熊vs | 园豆:20 (初学一级) | 2016-08-10 14:38
0

sqlquery,传递sqlparam参数。然后返回output参数的值

czd890 | 园豆:14488 (专家六级) | 2016-08-10 14:50

var list=DBContext.GetUserAccountRe(1, "三").ToList();这样调用就不能接收返回的值吗

支持(0) 反对(0) 小熊vs | 园豆:20 (初学一级) | 2016-08-10 14:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册