天天看点

EntityFramework 4.0 中添加对存储过程的调用

说明:针对 entityframework 4.0 中添加存储过程和的调用方法
一.新建存储过程
USE [Tester]
GO
/****** Object:  StoredProcedure [dbo].[GetUserInfoByUserName]    Script Date: 05/11/2011 18:17:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
    --create PROCEDURE [dbo].[UserMg_GetUserInfo] -- 新建
    --alter PROCEDURE [dbo].[UserMg_GetUserInfo]  -- 修改
       @userId char(50) 
    as
    set nocount on
    begin
       declare   @sqlstr   varchar(2000);
      set @sqlstr='
        select * 
  from Customer a 
  where ​​b.u_id='+@userId+'​​       '
       exec(@sqlstr) 
    end二.VS 中导入存储过程
1.双击项目中的 .edmx 文件,打开模型编辑窗口
2.在空白处右击,选择“模型浏览器”
3.展开“模型名.Store” 节点,并右击选择“从数据库更新模型”
4.在打开的更新向导中选择“添加”选项卡,展开“存储过程”节点,勾选要添加的过程名称,点击完成
5.右击新添加的存储过程名称,选择“添加函数导入”
6.在弹出的“添加函数导入”窗口中,输入“函数导入名称”并选择该函数对应的“存储过程名称”
7.如果存储过程有返回值的话需要在 “返回以下内容的集合”指定数据类型,并创建接受数据的实体对象
  7.1 如果返回值为一个数值,则选择标量,并选择标量类型
  7.2 如果返回的是多列的数据集,则选择“复杂类型”
     (注:在“存储过程列信息”中点击“获取列信息”按钮,
           可以获取到存储过程的返回的结果集中各个列的类型,
       特别声明:该获取的类信息取决于存储过程最后一个 select 语句
      )
  7.3 点击“创建信息的复杂类型”按钮后,可以在“模型浏览器”的“复杂类型”节点下看到刚刚新建
      的复杂类型了(负载类型的命名规则为:导入函数名称_Result)
8.点击“确定”按钮后,可以在“模型浏览器”的“函数导入”节点下看到刚刚新导入的函数了
9.到此已经成功的在该数据模型中添加一个存储过程的调用方法了三.调用示例(只是语法调用的演示)
    /// <summary>
    /// 调用 UserMg_GetUserInfo 存储过程获取信息
    /// </summary>
    /// <param name="userId">用户ID</param>
    /// <returns></returns>
    public static List<Customer> UserMg_GetUserInfo(string userId)
    {
      using (T.DataAccess.TesterEntities ent = new DataAccess.TesterEntities())
      {
        ObjectParameter par = new ObjectParameter("userId", typeof(string));
        ObjectResult<Customer> result = ent.UserMg_GetUserInfo(userId);
        if (result == null)
          return null;        return result.ToList();
      }
    }