C# ObjectParameter未从存储过程获取输出值
在我的应用程序VS2015、C、WebForm中,我有以下代码,以前在本地和生产服务器上都可以正常工作,但现在我遇到了错误: 插入项的存储过程: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 --
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;
}