C# 在实体框架中检索存储过程输出参数始终为空
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
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;
}