2013-05-22 4 views
1

мы используем против 2012SqlParameters к DbContext executesqlcommand

я написал ниже метод для выполнения executesqlcommand на DbContext.

//Check lock conditions for site part vrsm 
    public bool CanLock(int spvId) 
    { 
     SqlParameter output = new SqlParameter("editMode", SqlDbType.Bit); 
     output.Direction = ParameterDirection.Output; 
     SqlParameter parameter = new SqlParameter("spvId", SqlDbType.Int); 
     parameter.Value = spvId; 
     ExecuteProcedure("exec [dbo].[prc_SitePartVrsn_CanLock] {0}, @editMode = {1} output", parameter, output); 

     return Convert.ToBoolean(output.Value); 
    } 

Это очень старый способ передачи параметров. есть ли у нас лучший способ сделать это в C# 4.5 против 2012

пожалуйста, помогите ...

ответ

1

Помимо вашего синтаксиса, который будет бросать ошибку для вас, это почти единственный способ сделать Это. Я исправил ниже синтаксис:

SqlParameter output = new SqlParameter("editMode", SqlDbType.Bit); 
output.Direction = ParameterDirection.Output; 

SqlParameter parameter = new SqlParameter("spvId", SqlDbType.Int); 
parameter.Value = spvId; 

ExecuteProcedure("exec [dbo].[prc_SitePartVrsn_CanLock] @spvId, @editMode OUTPUT", parameter, output); 

bool retVal = (bool)output.Value; // same result as using Convert.ToBoolean 

редактировать Если вы не хотите использовать что-то вроде

var p = new SqlParameter { 
    ParameterName = "paramName", 
    DbType = DbType.Bit, 
    Direction = ParameterDirection.Output 
}; 
Смежные вопросы