Farseer.net輕量級ORM開源框架 V1.x 入門篇:存儲過程實體類映射

導航

目   錄:Farseer.net輕量級ORM開源框架 目錄html

上一篇:Farseer.net輕量級ORM開源框架 V1.x 入門篇:視圖的數據操做數據庫

下一篇:Farseer.net輕量級ORM開源框架 V1.x 入門篇:存儲過程數據操做app

前言

  在V1.0中,新增了存儲過程的映射。在以往的版本中,操做存儲過程的代碼沒有這麼優雅,必須在每次操做的時候傳入存儲過程名稱、in參數、out參數。框架

  在這個版本以後,存儲過程也享受了映射帶來的好處:函數

  1.   支持定義實體
  2.   實體中定義in參數、out參數
  3.   更易於維護(維護僅是針對實體結構)

  這是這個版本的一個小創新點。以往咱們調用存儲過程時,只能在邏輯段裏手動寫參數名稱、存儲過程名稱。工具

  這給咱們帶來了維護災難,同時最重要的是不支持硬編碼方式也是很不優雅的。在新版中實現了這一支持。學習

存儲過程上下文
    public class Proc : DbContext<Proc>
    {
        [Set(Name = "sp_Info_User")]
        public ProcSet<InfoUserVO> InfoUser { get; set; }

        [Set(Name = "sp_Insert_User")]
        public ProcSet<InsertUserVO> InsertUser { get; set; }

        [Set(Name = "sp_List_User")]
        public ProcSet<ListUserVO> ListUser { get; set; }

        [Set(Name = "sp_Value_User")]
        public ProcSet<ValueUserVO> ValueUser { get; set; }
    }

  它的各個存儲過程由ProcSet封裝。針對數據庫表提供的一系列執行的操做。被ProcSet包含的就是存儲過程字段了。這裏有點特殊的是,除了是查詢的結果集的映射外,包含了參數傳入的映射,而且區分in/out編碼

VO實體類

存儲過程實體類:spa

 1 public class InsertUserVO 
 2 {
 3     /// <summary> 用戶ID </summary>
 4     [Field(IsOutParam = true)]
 5     public int? ID { get; set; }
 6     /// <summary> 用戶名 </summary>
 7     [Field(IsInParam = true)]
 8     public string UserName { get; set; }
 9     /// <summary> 密碼 </summary>
10     [Field(IsInParam = true)]
11     public string PassWord { get; set; }
12 }

  存儲過程與表、視圖的區別比較大。在上面代碼中,看到使用了IsOutParamIsInParam的特性。標記後,在執行存儲過程時,會根據這些標記生成SQL參數化。傳入到存儲過程當中。.net

  與此同時,若是該條存儲過程執行後,會返回數據列表時,也會對應的返回當前這個實體列表。就根據咱們對錶進行查詢時同樣。

  經過存儲過程的映射,咱們不須要每次調用時手動指定他們了。讓咱們存儲過程也能ORM了。

存儲過程特性

   只有一個:FieldAttribute,它與表的特性是共同的。只不過它多了一些針對存儲過程而設計的:

  咱們先來看下面的表格:

序號 變量 註釋 類型 適用範圍 說明
1 Name 數據庫字段名稱 string 所有

指定表字段、視圖字段名稱、存儲過程參數的名稱、數據庫函數

未顯示指定時,默認使用當前的類屬性名稱做爲缺省名稱

2 IsOutParam 指示字段是否爲存儲過程當中輸出的參數 bool 存儲過程

 默認:false

設爲:true 將做爲SQL參數值傳入,並配合Name聲明參數名稱,與InParam區別是Out在數據庫存儲過程當中也要聲明爲該變量是out 即在存儲過程當中改變時,會將值返回來

3 IsInParam 指示字段是否爲存儲過程當中輸入的參數 bool 存儲過程  

 默認:false

設爲:true 將做爲SQL參數值傳入,並配合Name聲明參數名稱

   只是多了第二、3條屬性說明(與TableSet、ViewSet的特性:FieldAttribute,是同一個)。

  經過設置它們,很容易讓Farseer.Net哪些是參數及輸入輸出。

總結

  存儲過程的映射很是簡單,固然它的操做也是很是簡單,在下一篇咱們能夠學習到它提供的4種方法用來操做。

  這篇就結束在這,總結,其實沒什麼好總結的了。

導航

目   錄:Farseer.net輕量級ORM開源框架 目錄

上一篇:Farseer.net輕量級ORM開源框架 V1.x 入門篇:視圖的數據操做

下一篇:Farseer.net輕量級ORM開源框架 V1.x 入門篇:存儲過程數據操做

廣告時間

QQ羣:116228666 (Farseer.net開源框架交流) 請註明:Farseer.Net

Farseer.Net是一款ORM框架 + 經常使用工具 + 擴展集合。

Farseer 寓意:先知、預言家 一般在某些場合時,提供計謀、策略。也但願該框架能給你們提供最大化的便捷。

ORM:其英文全稱是:Object(對象) Relational(關係) Mapping(映射)

Farseer.Net的目標是:快速上手、快速開發、簡單方便。

1 Table.Data.User.Where(o=>o.ID == 1).ToEntity();
2 Table.Data.User.Where(o=>o.ID > 1).ToList();
3 Table.Data.User.Where(o=>o.ID != 0).Delete();
4 Table.Data.User.Where(o=>o.ID != 0).AddUp(o=>o.LoginCount, 1);
5 Table.Data.User.Where(o=>o.ID == 1).Update(new User{ UserName = "newName" });
6 Table.Data.User.Insert(new User{ UserName = "newName" });
相關文章
相關標籤/搜索