首页 > 解决方案 > API 中调用函数检索加载资源失败:服务器响应状态为 500 ()

问题描述

我正在使用 mvc 框架中的存储过程编写代码。我有一个 WorkOverDate 字段来选择一个日期并将其保存在 Unit 表中。保存后,我希望将该日期添加到另一个名为 WorkOver 的表中。当我尝试使用更新单元中信息的 api 中的存储过程调用函数时出现问题,我得到以下信息:加载资源失败:服务器响应状态为 500 () 我不确定是什么在这里做。我在页面中修改的所有内容都正确保存,但存储过程不起作用。任何建议都受到高度赞赏。

我有一个 UnitRepository 文件,其中包含以下代码:

public void UpdateWorkOver()
        {

            using (var cmd = _db.Database.GetDbConnection().CreateCommand())
            {

                cmd.CommandText = "dbo.WorkOverAddDate";
                cmd.CommandType = System.Data.CommandType.StoredProcedure;


                bool isOpen = cmd.Connection.State == ConnectionState.Open;
                if (!isOpen)
                {
                    cmd.Connection.Open();
                }

                cmd.ExecuteNonQuery();


                if (!isOpen)
                {
                    cmd.Connection.Close();
                }
            }

        }

对此的存储过程是:

CREATE PROCEDURE [dbo].[WorkOverAddDate]

AS

INSERT INTO dbo.WorkOver 
           (UnitID, WODate, CreatedBy, Created) 

SELECT UnitID, WODate, CreatedBy, Created

FROM dbo.WorkOver

UNION

SELECT  ID, WorkOverDate, UpdatedBy, Updated

FROM dbo.Unit

另外,我有一个 API,我在保存页面时使用存储过程调用函数。

//编辑

                    unit.Updated = DateTime.Now;
                    unit.UpdatedBy = _securityHelper.CurrentUserID.ToString();
                    _auditHelper.After = unit;

                    _repoUnit.Edit(unit);
                    if (unit.WorkOverDate != null)
                    { ((UnitRepository)_repoUnit).UpdateWorkOver(); }

标签: sql-serverapimodel-view-controllerprocedure

解决方案


问题是我必须添加存储过程:

Where WorkOverDate IS NOT NULL 

因为不能将 null 参数添加到不可为 null 的列中。现在它正在工作。


推荐阅读