我遇到了一个有点令人沮丧的问题。
在较低的层次上:我想知道 proc 中的 INSERT 或 UPDATE 查询是否成功。我不是 100% 确定所有查询(除了 SELECT)是否返回一个状态。我知道 SQL Server 为所有存储过程提供返回类型,目前我所有的返回类型都是 Integer。
在中间层:在我的存储库中,我想使用 Entity Framework 调用我的存储过程并将状态作为转换的(来自 int 的) bool 值从过程执行返回到我的服务。
在更高的层次上:我希望能够使用我的服务返回的 bool 值来向 MVC Controller 报告正在执行的任务。
在我的问题最重要的一层,我有以下代码:
public virtual ObjectResult<int> Proc_AddApprovalProcessor(string userId, string approverId, int approvalOrder)
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<int>(
"EXECUTE [dbo].[Proc_AddApprovalProcessor] @userId, @approverId, @approvalOrder",
new SqlParameter { ParameterName = "userId", Value = userId },
new SqlParameter { ParameterName = "approverId", Value = approverId },
new SqlParameter { ParameterName = "approvalOrder", Value = approvalOrder }).FirstOrDefault();
}
最佳答案
确保您的插入/更新存储过程以以下行结尾:
SELECT @@ROWCOUNT
然后检查返回码并检查它是否为 1(或者您期望插入/更新的行数)。
关于c# - INSERT 和 UPDATE 的执行状态 - MS SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39121720/