首页 新闻 搜索 专区 学院

Entity Framework db.database.sqlquery

0
[已关闭问题] 关闭于 2015-12-29 12:38

Entity Framework     db.database.sqlquery调用存储过程,获得的返回值一直为0

但是调用下层的DbCommand来执行,就可以获取正确的返回值。

小伙伴们有遇到这种情况没有

周岩的主页 周岩 | 初学一级 | 园豆:197
提问于:2015-12-11 17:32
< >
分享
所有回答(1)
0

db.database.sqlquery  返回 影响行数  db.database.sqlquery<T>  T接收 存储过程返回值

DJLNET | 园豆:232 (菜鸟二级) | 2015-12-13 13:29

可能我没说清楚吧,我程序中就是用的sqlquery的泛型。可是存储过程的返回值取不到。

  SqlParameter[] param=new SqlParameter[]
            {
                new SqlParameter("@orderId",20)
                ,new SqlParameter("@orderLineId", System.Data.SqlDbType.Int)
                ,new SqlParameter("@Return", SqlDbType.Int)
            };
            param[1].Direction = ParameterDirection.Output;
            param[2].Direction = ParameterDirection.ReturnValue;
            string sql = "GetOrderLine @orderId,@orderLineId";
            int result;
            using (MyTestEntities db=new MyTestEntities())
            {
                //using (DbConnection conn=db.Database.Connection)
                //{
                //    conn.Open();
                //    using (DbCommand cmd=conn.CreateCommand())
                //    {
                //        cmd.CommandText = sql;
                //        cmd.Parameters.AddRange(param);
                //        cmd.CommandType = CommandType.StoredProcedure;
                //        cmd.ExecuteScalar();
                //    }
                   
                //}
             
                result = db.Database.SqlQuery<int>(sql, param).FirstOrDefault();
            }
            var result1 = param[1].Value.ToString();
            var result2 = param[2].Value.ToString();
            return Ok();

支持(0) 反对(0) 周岩 | 园豆:197 (初学一级) | 2015-12-14 08:47

而且sq.database.sqlquery也是返回查询的结果集。sql.database.executesqlcommand才会返回受影响的行数

支持(0) 反对(0) 周岩 | 园豆:197 (初学一级) | 2015-12-14 08:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册