2013-05-22 26 views
1

我們正在使用vs 2012.SqlParameters to DBContext executionqlcommand

我寫了下面的方法在dbcontext上執行executeqlcommand。

//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 VS 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 
};