2
我在數據庫中的存儲過程:存儲過程調用不工作Entrity框架5碼第一
ALTER PROCEDURE [dbo].[DeletePaySlip]
@PayRunId BIGINT,
@EmployeeId BIGINT
AS
BEGIN
DECLARE @PaySlipId BIGINT
BEGIN TRY
SELECT @PaySlipId = Id
FROM PYREmployeePaySlip
WHERE PayRunId = @PayRunId AND EmployeeId = @EmployeeId
BEGIN TRANSACTION t1
IF @PaySlipId IS NOT NULL
BEGIN
DELETE FROM PYREmployeePaySlipDetail WHERE PaySlipId = @PaySlipId
DELETE FROM PYREmployeePaySlip WHERE Id = @PaySlipId
END
COMMIT TRANSACTION t1
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION t1
END CATCH;
END
如果我執行從SQL查詢窗口中的存儲過程,它的工作原理。
現在我試圖調用從C#代碼存儲過程
public bool DeleteEmployeePaySlip(long payRunId, long employeeId)
{
bool success = true;
var sqlparamPayRunId = new SqlParameter("@PayRunId", payRunId);
var sqlparamEmployeeId = new SqlParameter("@EmployeeId", employeeId);
using (var dbContext = new CRMDbContext())
{
try
{
var res = dbContext.Database.SqlQuery<Object>("EXEC DeletePaySlip @PayRunId, @EmployeeId",
sqlparamPayRunId,
sqlparamEmployeeId);
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
foreach (var ve in eve.ValidationErrors)
{
}
}
throw;
}
}
return success;
}
當我致電上述方法,它不會引發任何錯誤。但是這個存儲過程似乎沒有被調用。
謝謝你的回答。我已經嘗試了ExecuteSqlCommand()方法,因爲我的存儲過程是非查詢。有效! – 2014-09-09 09:58:46