1

C# кодПолучить хранимая процедура выходных параметров в Entity Framework всегда нулевой

public List<searchProducts_Result> GetProducts() 
{ 
      var nameParam = new ObjectParameter("numbers", typeof(int)); 
      List<searchProducts_Result> listobjs = new List<searchProducts_Result>(); 
      ObjectResult<searchProducts_Result> objResult = null; 
      searchProducts_Result outParam = new searchProducts_Result(); 
      using (var db = new SPWebEntities()) 
      { 
       objResult = db.searchProducts("asd", 2, 5, "15", nameParam); 
       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; 
} 

Моя хранимая процедура:

[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 

nameParam.Value Это всегда возвращает нулевое значение

Когда я выполнить хранимую процедуру в SQL Server Mgmt Studio, кажется, что она имеет значение, но в C# всегда имеет значение null

+0

Каков метод поиска продуктов? – Botonomous

+0

Поиск продукта метод, сгенерированный из (ado.net entity framework) по функции import – DevC

+0

Пробовав выполнить свою proc с помощью db.sqlquery ? – Botonomous

ответ

1

Вы должны перечислить свой результат, чтобы фактически выполнить хранимую процедуру. Попробуйте следующее:

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; 
} 
Смежные вопросы