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


導航

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

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

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

前言

  在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實體類

存儲過程實體類:

 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參數化。傳入到存儲過程中。

  與此同時,如果該條存儲過程執行后,會返回數據列表時,也會對應的返回當前這個實體列表。就根據我們對表進行查詢時一樣。

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

存儲過程特性

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

  我們先來看下面的表格:

序號 變量 注釋 類型 適用范圍 說明
1 Name 數據庫字段名稱 string 全部

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

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

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

 默認:false

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

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

 默認:false

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

   只是多了第2、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" });

 


免責聲明!

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



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