Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中检索存储过程输出参数始终为空_C#_Entity Framework_Stored Procedures_Entity Framework 4_Output Parameter - Fatal编程技术网

C# 在实体框架中检索存储过程输出参数始终为空

C# 在实体框架中检索存储过程输出参数始终为空,c#,entity-framework,stored-procedures,entity-framework-4,output-parameter,C#,Entity Framework,Stored Procedures,Entity Framework 4,Output Parameter,C#代码 nameParam.Value它总是返回空值 当我在SQL Server Mgmt Studio中执行存储过程时,它似乎有一个值,但在c#中它总是空的为了实际执行存储过程,您必须枚举结果。试试这个: [searchProducts] @productName varchar(50), @pageStart int=2, @pageEnd int=4, @result varchar(MAX), @numbers int output as

C#代码

nameParam.Value
它总是返回空值


当我在SQL Server Mgmt Studio中执行存储过程时,它似乎有一个值,但在c#中它总是空的

为了实际执行存储过程,您必须枚举结果。试试这个:

[searchProducts]
    @productName varchar(50),
    @pageStart int=2,
    @pageEnd int=4,
    @result varchar(MAX),
    @numbers int output
as
   select @numbers = COUNT(*)  
   from products 
   where productName like @productName 

   select *
   from (select 
            *,
            ROW_NUMBER() over (order by ID) as row 
         from products 
         where productName like @productName) a 
   where a.row between @pageStart and @pageEnd
public List GetProducts()
{
var nameParam=新对象参数(“数字”,typeof(int));
List listobjs=新列表();
//List-objResult=null;
searchProducts_Result outParam=新的searchProducts_Result();
使用(var db=new SPWebEntities())
{
//通过调用ToList()执行SP
列表对象结果=
searchProducts(“asd”,2,5,“15”,nameParam).ToList();
if(nameParam.Value!=null)
outParam.UserID=nameParam.Value.ToString();
其他的
outParam.UserID=“0”;
添加(输出参数);
foreach(搜索产品\u objResult中的结果sr)
{
添加(sr);
}
}
返回listobjs;
}

为了实际执行存储过程,必须枚举结果。试试这个:

[searchProducts]
    @productName varchar(50),
    @pageStart int=2,
    @pageEnd int=4,
    @result varchar(MAX),
    @numbers int output
as
   select @numbers = COUNT(*)  
   from products 
   where productName like @productName 

   select *
   from (select 
            *,
            ROW_NUMBER() over (order by ID) as row 
         from products 
         where productName like @productName) a 
   where a.row between @pageStart and @pageEnd
public List GetProducts()
{
var nameParam=新对象参数(“数字”,typeof(int));
List listobjs=新列表();
//List-objResult=null;
searchProducts_Result outParam=新的searchProducts_Result();
使用(var db=new SPWebEntities())
{
//通过调用ToList()执行SP
列表对象结果=
searchProducts(“asd”,2,5,“15”,nameParam).ToList();
if(nameParam.Value!=null)
outParam.UserID=nameParam.Value.ToString();
其他的
outParam.UserID=“0”;
添加(输出参数);
foreach(搜索产品\u objResult中的结果sr)
{
添加(sr);
}
}
返回listobjs;
}

什么是搜索产品方法?通过函数导入从(ado.net entity framework)生成的搜索产品方法如果您尝试使用db.sqlquery执行程序?是的,结果很好,它告诉我@numbers=15,但在C中,它总是返回null搜索产品方法是什么?搜索产品方法从(ado.net实体框架)通过函数导入当您尝试使用db.sqlquery执行程序时?是的,结果很好,它告诉我@numbers=15,但在C#中,它总是返回null。ToList()是答案。谢谢。:-)ToList()是答案。谢谢。:-)
public List<searchProducts_Result> GetProducts()
{
   var nameParam = new ObjectParameter("numbers", typeof(int));
   List<searchProducts_Result> listobjs = new List<searchProducts_Result>();

   // List<searchProducts_Result> objResult = null;

   searchProducts_Result outParam = new searchProducts_Result();
   using (var db = new SPWebEntities())
   {
      // by calling ToList() you execute the SP
      List<searchProducts_Result> objResult =
          db.searchProducts("asd", 2, 5, "15", nameParam).ToList();

      if (nameParam.Value != null)
         outParam.UserID = nameParam.Value.ToString();
      else
         outParam.UserID = "0";
      listobjs.Add(outParam);

      foreach (searchProducts_Result sr in objResult)
      {
         listobjs.Add(sr);
      }
   }

   return listobjs;
}