【发布时间】:2014-09-05 06:29:15
【问题描述】:
我的数据库中有一个存储过程:
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;
}
当我调用上面的方法时,它不会抛出任何错误。但是存储过程似乎没有被调用。
【问题讨论】:
标签: sql-server-2008 ef-code-first entity-framework-5