2013-04-17 3 views
1

Я пытаюсь выполнить процедуру магазина, как это:SQLQuery возвращают NULL каждый раз

public bool Test(){ 
    var searchItem=base.Database.SqlQuery<QueryEntity>("exec nameOfMyProcedure @param1={0}",param13).FirstOrDefault(); 
    if(searchItem!=null){ 
     return searchItem.Output1; 
    } 
    else{ 
     return false; 
    } 
private class QueryEntity{ 
    public bool Output1{get;set;} 
} 

Я один Возвращение в хранимой процедуре

К сожалению, searchItem всегда возвращает нуль.

У вас есть идея, как я могу это разрешить?

Я использую SQL-сервер и C#.

ответ

0

Найти решение. Это не совсем правильный, но .. Это работа

создать новую хранимую процедуру, которая возвращать 1 выход как этот

Select @Return_value as Return 

вместо

Return @Return_value 
0

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

+0

Но «FirstOrDefault()» следует исправить что, или нет (просить о себе)? –

+0

Нет, это вернет первый элемент в перечислимом. – danish

+0

Я понимаю причину, я не знаю, как это исправить ... – Alice

0

Вы можете попробовать что-то вроде этого

base.Database.SqlQuery<IEnumerable<string>>("exec nameOfMyProcedure @param1={0},@param2={1},@param3={2}",param1,param2,param3) 

в основном это является примером, и вам нужно сделать, это, смотрите в структуру того, что ваши хранимые процедуры возвращается, а затем использовать подходящий объект для синтаксического анализа.

Здесь я принимаю все значения возвращаемых значений.

+0

Выходной сигнал два BIT, поэтому IEnumerable ? – Alice

+0

Я пробовал, и у меня есть это: Тип результата «System.Collections.Generic.IEnumerable» может быть не абстрактным и содержать конструктор по умолчанию – Alice