2016-12-28 46 views
0

執行我有一個存儲過程,我稱之爲正是我的所有其他人一樣(這工作正常),但它似乎只被執行時,我加計數()把它...存儲過程只用計數

這是我的控制器代碼:

 public static void SaveGridLayout(string userName, string gridViewId, string layoutData) 
    { 
     using (var context = new Entities()) 
     { 
      var userNameParam = new SqlParameter("@user_name", userName); 
      var gridViewIdParam = new SqlParameter("@grid_id", gridViewId); 
      var layoutParam = new SqlParameter("@layout", layoutData); 

      context.Database.SqlQuery<UserGridLayoutsEntity>("sp_SaveLayout @user_name, @grid_id, @layout", userNameParam, gridViewIdParam, layoutParam); 
     } 
    } 

這不會給任何結果,但是當我改變最後一行:context.Database.SqlQuery<UserGridLayoutsEntity>("sp_SaveLayout @user_name, @grid_id, @layout", userNameParam, gridViewIdParam, layoutParam).Count();它並執行SP。不管怎樣,不必增加計數並且從一開始就使程序正確執行,這將是很好的。 謝謝!

+0

這是因爲'SqlQuery'只是一個_query_,直到你真的對結果做了某些事情(比如計算它們)。如果你只是想立即執行一個SQL語句而沒有得到任何結果,那就使用'ExecuteSqlCommand'。 –

回答

1
public static void SaveGridLayout(string userName, string gridViewId, string layoutData) 
{ 
    using (var context = new Entities()) 
    { 
     var userNameParam = new SqlParameter("@user_name", userName); 
     var gridViewIdParam = new SqlParameter("@grid_id", gridViewId); 
     var layoutParam = new SqlParameter("@layout", layoutData); 

     context.Database.ExecuteSqlCommand("sp_SaveLayout @user_name, @grid_id, @layout", userNameParam, gridViewIdParam, layoutParam); 
    } 
} 

我想你可以直接像這樣執行它。使用.SqlQuery,甚至可以使用.ToList()如果不是.Count(),但是executeqlcommand應該在你的情況下做得很好。