【发布时间】:2017-02-07 18:40:47
【问题描述】:
在 SQL Server Management Studio 中:
- 右键单击程序
- 执行
- 不要为 OUTPUT 参数输入值
- 输入另一个字符串参数的值
- 返回正确的值(例如:12+)
调用代码:
DECLARE @return_value int,
@CustomerID bigint
EXEC @return_value = [dbo].[InsertCustomer]
@CustomerID = @CustomerID OUTPUT,
@Name = N'CustomerName'
SELECT @CustomerID as N'@CustomerID'
SELECT 'Return Value' = @return_value
在应用程序代码中:
- 运行以下代码
-
CustomerID的返回值始终为 1
代码:
ObjectParameter ob = new ObjectParameter("CustomerID", typeof(long));
var CustomerID = db.InsertCustomer(ob, "CustomerName");
我试图通过传递一个类型并且通常是按值传递对象(例如:0、1 等)来更改新的 ObjectParameter(,) 第二个参数,但没有成功。
这里可能出了什么问题?
更新:
这是实体框架过程代码的样子:
public virtual int InsertCustomer(ObjectParameter customerID, string name)
{
var nameParameter = name != null ?
new ObjectParameter("Name", name) :
new ObjectParameter("Name", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("InsertCustomer", customerID, nameParameter);
}
【问题讨论】:
-
您似乎没有将代码中的输出参数指定为输出参数。
标签: c# sql-server entity-framework