存储过程仅使用 Count 执行

stored procedure only executes with Count

我有一个存储过程,我调用它与我的所有其他存储过程完全一样(工作正常)但它似乎只在我向它添加 Count() 时执行...

这是我的控制器代码:

        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。以某种方式不必添加计数并从一开始就执行该过程会很好。 谢谢!

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() 但 executesqlcommand 应该在你的情况下做得很好。