Entity Framework如何获取存储过程中的output参数
2013-07-04 22:01
525 查看
在Entity Framework中,我们通常会用Function Import来将存储过程映射到程序段,从而可以用ObjectContext或DbContext的实例像调用方法一样来调用存储过程。在包含有output参数的存储过程中,我们用一个简单的例子来说明应该如何处理。
数据库表:
CREATE TABLE Test
(
Id int primary key identity,
Name nvarchar(50) not null,
Description nvarchar(max)
)
存储过程:
CREATE PROCEDURE dbo.TestInsert
@Name varchar(50),
@Description varchar(max),
@TestID int OUT
AS
INSERT INTO Test(Name,Description) VALUES(@Name,@Description)
SET @TestID = SCOPE_IDENTITY()
第一步:
在Funtion Import的wizard中将Return Type设置为"None"
此时可以从Context类中发现此存储过程映射的方法
#region Function Imports
/// <summary>
/// No Metadata Documentation available.
/// </summary>
/// <param name="name">No Metadata Documentation available.</param>
/// <param name="description">No Metadata Documentation available.</param>
/// <param name="testID">No Metadata Documentation available.</param>
public int TestInsert(global::System.String name, global::System.String description, ObjectParameter testID)
{
ObjectParameter nameParameter;
if (name != null)
{
nameParameter = new ObjectParameter("Name", name);
}
else
{
nameParameter = new ObjectParameter("Name", typeof(global::System.String));
}
ObjectParameter descriptionParameter;
if (description != null)
{
descriptionParameter = new ObjectParameter("Description", description);
}
else
{
descriptionParameter = new ObjectParameter("Description", typeof(global::System.String));
}
return base.ExecuteFunction("TestInsert", nameParameter, descriptionParameter, testID);
}
#endregion
第二步:
从上面代码看到该方法需要三个参数,而第三个是一个ObjectParameter类型的参数,该类型有一个Value属性,之后我们就会通过该属性来获取output参数的值。
在VS2012中,甚至可以省去Function Import的过程,在将存储过程添加至Entity Model Designer的时候,VS2012附带了将导入的存储过程转换为方法的选项。
这样就可以直接在程序端调用方法。
数据库表:
CREATE TABLE Test
(
Id int primary key identity,
Name nvarchar(50) not null,
Description nvarchar(max)
)
存储过程:
CREATE PROCEDURE dbo.TestInsert
@Name varchar(50),
@Description varchar(max),
@TestID int OUT
AS
INSERT INTO Test(Name,Description) VALUES(@Name,@Description)
SET @TestID = SCOPE_IDENTITY()
第一步:
在Funtion Import的wizard中将Return Type设置为"None"
此时可以从Context类中发现此存储过程映射的方法
#region Function Imports
/// <summary>
/// No Metadata Documentation available.
/// </summary>
/// <param name="name">No Metadata Documentation available.</param>
/// <param name="description">No Metadata Documentation available.</param>
/// <param name="testID">No Metadata Documentation available.</param>
public int TestInsert(global::System.String name, global::System.String description, ObjectParameter testID)
{
ObjectParameter nameParameter;
if (name != null)
{
nameParameter = new ObjectParameter("Name", name);
}
else
{
nameParameter = new ObjectParameter("Name", typeof(global::System.String));
}
ObjectParameter descriptionParameter;
if (description != null)
{
descriptionParameter = new ObjectParameter("Description", description);
}
else
{
descriptionParameter = new ObjectParameter("Description", typeof(global::System.String));
}
return base.ExecuteFunction("TestInsert", nameParameter, descriptionParameter, testID);
}
#endregion
第二步:
从上面代码看到该方法需要三个参数,而第三个是一个ObjectParameter类型的参数,该类型有一个Value属性,之后我们就会通过该属性来获取output参数的值。
static void Main() { using (TestEntities context = new TestEntities()) { ObjectParameter output = new ObjectParameter("TestID", typeof(Int32)); context.TestInsert("Allen", "Entity Framework", output); Console.WriteLine(output.Value); } }
在VS2012中,甚至可以省去Function Import的过程,在将存储过程添加至Entity Model Designer的时候,VS2012附带了将导入的存储过程转换为方法的选项。
这样就可以直接在程序端调用方法。
相关文章推荐
- 从带输出参数的存储过程中获取输出参数的值 OUTPUT
- 存储过程有输出参数,在c#中用nhibernate调用存储过程时,如何才能获取到一个结果集和这个输出参数呢?
- 获取手机内外部存储空间的参数 && 如何决定一个apk的安装位置 && APK安装过程及原理详解
- 执行存储过程获取OUTput参数返回值
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
- iBatis.Net如何获取存储过程的Output的参数值
- 获取android手机内外部存储空间的参数 && 如何决定一个apk的安装位置 && APK安装过程及原理详解
- PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)
- Enterprise Library 2.0系列:如何获取存储过程的output参数值?
- PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
- IBatis.Net如何获取存储过程的Output的参数值
- Entity Framework 执行存储过程的 获取 OutPut 参数的值
- C#获取存储过程的 Return返回值和Output输出参数值
- db2 - 如何在shell中获取存储过程OUT型参数的返回值(awk)
- IBatis.Net如何获取存储过程的Output的参数值
- SQL SERVER如何获取指定数据库中所有存储过程的参数
- 如何 获取SQL Server中的存储过程参数列表
- sql 存储过程没有写传出参数如何获取里面的内容
- C#中如何获取存储过程的输出参数值
- IBatis.Net如何获取存储过程的Output的参数值