C# Entity Framework如何配置存儲過程調用

Entity Framework機制很方便的使用表和視圖,但是針對一些複雜的業務邏輯,他就有點處理性能低下了。

下面是在項目中使用到Oracle 存儲過程調用的步驟:開發平臺VS2012+Oracle11g。

目前的報表開發流程統一如下,

1.  定義好存儲過程和他指針輸出以來的視圖對象。

     完成包含報表邏輯的視圖或者存儲過程,測試沒有問題,輸出的列名和類型完全符合需求上的定義。

2. 創建一張存儲過程對於數據集的報表,主要用來存儲用來做報表功能模塊的數據集,數據庫定期處理,導入當天處理完成的數據到報表數據表。

    從視圖 或者存儲過程中將結果集導入到新表中,並建立主鍵,觸發器,lastmodified,以及將查詢條件中所用到的所有字段,加上索引。

3. 使用自己編寫的XMLReplace類庫對Entity Framework生產的模板類的所有實體類進行替換處理,已經動態添加存儲過程對應的Function。

   使用上在代碼成,將Oracle 存儲過程添加到Entity Framework機制下的 函數功能。

注意:這裏添加的Function必須與Oracle Procedure 擁有相當的輸入和輸出參數,以及參數對於的類型。

這個XMLReplace功能實際上還有處理類名的作用:如在Oracle中TBL_CLAIM表,進行Replace處理之後,在代碼中生成CLAIM 實體類。另外Entity Framework會生成實體類對於的所有外鍵實體類的對應關係。如TBL_STUDENT有FK_CLASS_ID,除了擁有CLASS_ID這個字段,將還會擁有CLASS實體對象的屬性。

4.  建TBL_report_對應的specification文件,其泛型參數類型就是新表的類型。

備註:specification文件,時間上就是Linq查詢的組合文件,就像摸個查詢中拼接所有查詢字段的結果,實際上就是sql where 後面的查詢語句,最後可在Linq調用數據中的解析文件中看到。

5. 綁定到UI。在頁面上調用查詢,生成specification,組裝分頁和排序條件後,返回結果集,傳到頁面的flexgrid。

這裏是採取的Jquery + handle class (ashx.cs)的組合,調用$.ajax方法,success時將返回的數據集綁定到 Jquery flexgrid控件中。

[備註]Jquery flexgrid;Javascript To Json;Ajax+Web service。

 

[總結]以上是開發流程。具體細節可查網上相關資料。

Entity Framework調用存儲過程之類的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章