zoukankan      html  css  js  c++  java
  • 关于MVC 中EF调用存储过程

    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();      

            }    

    }

  • 相关阅读:
    aop日志记录
    RocketMQ 启动停止命令
    windows搭建RocketMQ服务
    zTree实战
    springboot 传List参数
    Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)
    SpringBoot Controller接收参数的几种常用方
    clob大数据转换为多行数据
    oracle dba学习
    TreeNode(包含读出文件里的信息)
  • 原文地址:https://www.cnblogs.com/yingger/p/3407686.html
Copyright © 2011-2022 走看看