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를 사용하면 .Count()가 아니라면 .ToList()를 사용할 수도 있지만 executeqlcommand는 좋은 결과를 가져와야한다.