zoukankan      html  css  js  c++  java
  • Entity Framework 4.3 中使用存储过程

    尽管 Entity Framework 4.3 都已经发布了,且表示在 EF 5 中性能将会有很大提升.但很多存储过程控,始终不会放弃使用存储过程,那今天就让我们看看在 EF 4.3 中怎么使用存储过程.

    我们接着上篇文章,在 Sql Server 2008 中创建一个简单的存储过程,如下:

    CREATE PROCEDURE [dbo].[P_GetArticleByID]          @IDint AS BEGIN         SELECT ID,Title FROM Articles         WHERE ID=@ID;END

    查询存储过程在 Controller 中的写法:

    BlogContext db =newBlogContext();
    SqlParameter[] parms =newSqlParameter[1];
    parms[0]=newSqlParameter("@ID",1);
    var result = db.Articles.SqlQuery("exec P_GetArticleByID @ID", parms);
    returnView(result);

    可见,我们通过执行 Sql 语句的方法来使用存储过程.增、删、改方法:

    int result = db.Database.ExecuteSqlCommand("exec P_DeleteArticleByID @ID", parms);

    本篇简单给出在 EF 4.3 中使用存储过程的方法,希望对大家有所帮助.

     

    说明:针对 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 a.u_id='+@userId+'   union all   select *   from Customer b   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();      

            }    

    }

  • 相关阅读:
    ElementUI中弹窗使用textarea原样显示SpringBoot后台带换行的StringBuilder内容
    Node搭建静态资源服务器时后缀名与响应头映射关系的Json文件
    Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
    JS中怎样比较两个时分格式的时间大小
    ElementUI中对el-table的某一列的时间进行格式化
    MongoDb在Windows上的下载安装以及可视化工具的下载与使用
    Express中使用ejs新建项目以及ejs中实现传参、局部视图include、循环列表数据的使用
    FFmpeg-20160506-snapshot-bin
    FFmpeg-20160428-snapshot-bin
    FFmpeg-20160422-snapshot-bin
  • 原文地址:https://www.cnblogs.com/chenqingbin/p/11051197.html
Copyright © 2011-2022 走看看