如何在 Code First 中执行带参数的存储过程?
How do I execute a stored procedure that takes a parameter in Code First?
我有一个带参数的存储过程,我想 运行 它来自 EF 6.1.3 的 CodeFirst 实现。这个特定的 sp 从 table 中删除行并且除了删除的行数之外不 return 任何东西。我不太确定该怎么做。假设存储过程是 sp_DeleteTheseRows,它只有一个参数 @TheParam。那看起来怎么样?我猜它会使用 ExecuteSQLCommand。会不会是:
MyContext.Database.ExecuteSQLCommand("exec dbo.sp_DeleteTheseRows @TheParam", new SqlParameter("@TheParam", userSuppliedParam));
确保您已将命令类型定义为存储过程,例如,
cmd.CommandType = 存储过程;
这是我发现的。以下均为上述问题的解答:
DbContext.Database.ExecuteSqlCommand("exec dbo.sp_DeleteTheseRows @p0", MyValue);
事实证明你并不真的需要 EXEC
DbContext.Database.ExecuteSqlCommand("dbo.sp_DeleteTheseRows @p0", MyValue);
DbContext.Database.ExecuteSqlCommand("dbo.sp_DeleteTheseRows @Code",new SqlParameter("@Code", MyValue));
我有一个带参数的存储过程,我想 运行 它来自 EF 6.1.3 的 CodeFirst 实现。这个特定的 sp 从 table 中删除行并且除了删除的行数之外不 return 任何东西。我不太确定该怎么做。假设存储过程是 sp_DeleteTheseRows,它只有一个参数 @TheParam。那看起来怎么样?我猜它会使用 ExecuteSQLCommand。会不会是:
MyContext.Database.ExecuteSQLCommand("exec dbo.sp_DeleteTheseRows @TheParam", new SqlParameter("@TheParam", userSuppliedParam));
确保您已将命令类型定义为存储过程,例如, cmd.CommandType = 存储过程;
这是我发现的。以下均为上述问题的解答:
DbContext.Database.ExecuteSqlCommand("exec dbo.sp_DeleteTheseRows @p0", MyValue);
事实证明你并不真的需要 EXEC
DbContext.Database.ExecuteSqlCommand("dbo.sp_DeleteTheseRows @p0", MyValue);
DbContext.Database.ExecuteSqlCommand("dbo.sp_DeleteTheseRows @Code",new SqlParameter("@Code", MyValue));