Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ObjectParameter未从存储过程获取输出值_C#_Asp.net_Sql Server_Visual Studio 2015_Webforms - Fatal编程技术网

C# ObjectParameter未从存储过程获取输出值

C# ObjectParameter未从存储过程获取输出值,c#,asp.net,sql-server,visual-studio-2015,webforms,C#,Asp.net,Sql Server,Visual Studio 2015,Webforms,在我的应用程序VS2015、C、WebForm中,我有以下代码,以前在本地和生产服务器上都可以正常工作,但现在我遇到了错误: 插入项的存储过程: CREATE PROCEDURE [dbo].[StoredProcedure_Item_Insert] @ItemText VARCHAR(250), @InsertedID INT OUTPUT INSERT INTO [dbo].[Item] ([ItemText]) VALUES (@ItemText --

在我的应用程序VS2015、C、WebForm中,我有以下代码,以前在本地和生产服务器上都可以正常工作,但现在我遇到了错误:

插入项的存储过程:

CREATE PROCEDURE [dbo].[StoredProcedure_Item_Insert]
    @ItemText VARCHAR(250),
    @InsertedID INT OUTPUT

    INSERT INTO [dbo].[Item] ([ItemText])
    VALUES (@ItemText  -- ItemText - varchar(250)
           );

    SET @InsertedID = SCOPE_IDENTITY();

    SELECT @InsertedID AS InsertedID;
存储库代码:

public int InsertItem(string itemText)
{
        ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);

        _db.StoredProcedure_Item_insert(feeText, InsertedId);

        return (int)InsertedId.Value;
}
在.edmx文件中为此存储过程导入函数

当我点击“获取列信息”按钮时,我得到

我能想到的唯一变化是我的机器升级到了Windows 10,所以我不得不重新安装VS2015

我的尝试/发现:

InsertedId。值始终为-1 错误消息位于“InsertedId”->“MapableType”->“DeclaringMethod”中 去极化法中的误差表示

System.RuntimeTypeInsertedId.MappableType.DeclaringMethod引发了System.InvalidOperationException System.Reflection.MethodBase{System.InvalidOperationException}类型的异常

DeclaringMethod.消息说

方法只能对Type.IsGenericParameter为true的类型调用

在存储过程中尝试并输出

尝试选择@InsertedID并返回@InsertedID 已尝试使用新的ObjectParameterInsertedID,第二个参数的TypeOfIn32而不是-1
我已经花了这么多小时试图弄清楚到底发生了什么,但我完全被卡住了…

我想它抱怨从存储过程返回的结果是一个结果集是有道理的,但我仍然不知道它为什么会工作。。。不管怎样,按如下方式更改代码就成功了

更改自:

    public int InsertItem(string itemText)
        {
            ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);
            _db.usp_Fee_insert(itemText, InsertedId);
            return (int)InsertedId.Value;
        }
为此:

public int InsertItem(string itemText)
    {
        ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);
        var result = _db.usp_Fee_insert(itemText, InsertedId);
        return (int)InsertedId.Value;
    }

我想它抱怨存储过程返回的结果是一个结果集是有道理的,但我仍然不知道它为什么会工作。。。不管怎样,按如下方式更改代码就成功了

更改自:

    public int InsertItem(string itemText)
        {
            ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);
            _db.usp_Fee_insert(itemText, InsertedId);
            return (int)InsertedId.Value;
        }
为此:

public int InsertItem(string itemText)
    {
        ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);
        var result = _db.usp_Fee_insert(itemText, InsertedId);
        return (int)InsertedId.Value;
    }