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

        }    

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM