原文地址:http://blogs.microsoft.co.il/gilf/2010/05/09/how-to-retrieve-stored-procedure-output-parameters-in-entity-framework/ 

How to Retrieve Stored Procedure Output Parameters in Entity Framework

One question that 
raises from time to 
time in EF forums 
is how you can 
retrieve stored 
procedure output 
parameters in EF 
Function Import. 
This post will show you how to do that.

The Stored Procedure

In the example I’m going to use the following stored procedure:

CREATE PROCEDURE dbo.SchoolBudgetForDateRange
    @StartDate DATETIME,
    @EndDate DATETIME,
    @Sum money output
AS
SET NOCOUNT ON;
SELECT @Sum = SUM(Department.Budget)
FROM Department 
WHERE StartDate BETWEEN @StartDate AND @EndDate

The stored procedure returns the school budget for a given date. 
By of course the stored procedure could return that calculation 
without using an output parameter.

Retrieving Stored Procedure Output Parameter

After creating a Function Import (which is explained here) we can 
use the SchoolBudgetforDateRange method with the context we have. 
In order to get an output parameter you need to supply an ObjectParameter 
to the stored procedure call which holds the parameter name and type. 
After the execution of the stored procedure you can retrieve the 
parameter using the Value property of the ObjectParameter
The following code shows how to that exactly what I wrote:

static void Main(string[] args)
{
  using (SchoolEntities context = new SchoolEntities())
  {
    var outputParameter = new ObjectParameter(“sum”, typeof(decimal));
    context.SchoolBudgetForDateRange(new DateTime(2007, 1, 1), 
      new DateTime(2008, 1, 1), 
      outputParameter);
    Console.WriteLine(outputParameter.Value);
  }
}

Summary

Once you need to retrieve output parameters from EF Function Imports
you need to supply an ObjectParameter to hold the output. In the post 
I showed how to do that.

----------------------------------------

自我测试

ALTER PROC [dbo].[usp_AddTeacherInfo]
@Name NVARCHAR(50),
@Phone NVARCHAR(50),
@Address NVARCHAR(50),
@Age INT,
@Sum UNIQUEIDENTIFIER OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @TmpID UNIQUEIDENTIFIER
SET @TmpID = NEWID()
INSERT INTO dbo.Teacher
(ID, Name, Phone, Address, Age )
VALUES ( @TmpID,@Name,@Phone,@Address,@Age)

SET @Sum = @TmpID
SET NOCOUNT OFF
END

public void AddTeacherInfo()
{
using (DemoDBEntities entity = new DemoDBEntities())
{
var outputParameter = new ObjectParameter("sum", typeof(Guid));

var dd = entity.usp_AddTeacherInfo("dapeng", "021-99999999", "address222", 86, outputParameter);

}
}

EF 接收OUTPUT参数的方法 How to Retrieve Stored Procedure Output Parameters in Entity Framework的更多相关文章

  1. 【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法

    spring mvc POST方式 接收单个参数,不加任何注解,参数名对应,接收到的值为null spring mvc POST方式 接收单个参数,加上@RequestBody,接收到参数格式:{&q ...

  2. [转]Easy Stored Procedure Output Oracle Select

    本文转自:http://www.oraclealchemist.com/oracle/easy-stored-procedure-output/ I answered a question on a ...

  3. EF报错:对一个或多个实体的验证失败(Entity Framework 强制转换失败数据异常处理方法)

    1.使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败.有关详细信 ...

  4. EF 6 调用存储过程时返回多结果集和OUTPUT参数问题

    原文地址:http://q.cnblogs.com/q/56836/ 各位大侠,提问一个关于EF6调用存储过程时返回多结果集和OUTPUT参数问题 目前已经可以调用存储过程并且可以返回多个结果集. 但 ...

  5. springmvc 传递和接收数组参数

    java url中如何传递数组,springMVC框架controller类如何接收数组参数? 下面介绍一下URL中传递数组参数方法: dd.do?titles[]=col1&titles[] ...

  6. How to call a stored procedure in EF Core 3.0 via FromSqlRaw(转载)

    问: I recently migrated from EF Core 2.2 to EF Core 3.0. Unfortunately, I haven't found a way to call ...

  7. EF Power Tools参数不正确的解决方法

    在Visual Studio 2010安装了EF Power Tools Beta 3之后,希望根据本地现有数据库模型来生成基于Entity Framework Code First的代码时,经常出现 ...

  8. struts2视频学习笔记 11-12(动态方法调用,接收请求参数)

    课时11 动态方法调用 如果Action中存在多个方法时,可以使用!+方法名调用指定方法.(不推荐使用) public String execute(){ setMsg("execute&q ...

  9. Struts2中Action接收参数的方法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...

随机推荐

  1. unix网络编程第三版源代码ubuntu下配置的问题解决

    第一步:首先下载本书配套的源码unpv13e.tar.gz 第二步:解压后进入根文件夹有一个README 4 Execute the following from the src/ directory ...

  2. 异步套接字编程之select模型

      █ 选择(select)模型是Winsock中最常见的 I/O模型.核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向 ...

  3. [转] The Single Biggest Obstacle to Trading Success

    Why do some people succeed spectacularly in the market while others fail? The market is the same for ...

  4. [转] GDB attach

    转:http://blog.csdn.net/wangeen/article/details/14230171 attach是GDB一种重要的debug模式,在MPI程序debug中发挥重要的作用. ...

  5. 最小生成树--->NYOJ-38 布线问题

    此题是最基础的最小生成树的题目,有两种方法, 一个是prim一个是kruskal算法,前者利用邻接矩阵,后者是利用边集数组 prim算法的思想是:一个点一个点的找, 先找从第一个点到其他点最小的, 把 ...

  6. 字符串格式化 String.format() 案例

    转换符 转换符      说    明 %s            字符串类型 %c            字符类型 %b            布尔类型 %d            整数类型(十进制 ...

  7. java集合框架01

    List 接口存储一组不唯一(可以重复),有序(插入顺序)的对象 01. ArrayList实现了长度可变的数组,在内存中分配连续的空间.遍历元素和随机访问元素的效率比较高 通过看ArrayList的 ...

  8. ImageIO.wtrie生成jpg图片质量损失方案:BufferedImage生成jpg图片文件流

    Iterator<ImageWriter> iterator = ImageIO.getImageWritersByFormatName("jpeg"); ImageW ...

  9. js设置元素的onclick传参方法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  10. PHP String

    PHP 5 String 函数 PHP String 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. 函数 描述 addcslashes() 返回在指定的字符前添加反斜杠的字符串. add ...