在V1.0中,新增了存儲過程的映射。在以往的版本中,操做存儲過程的代碼沒有這麼優雅,必須在每次操做的時候傳入存儲過程名稱、in參數、out參數。框架
在這個版本以後,存儲過程也享受了映射帶來的好處:函數
這是這個版本的一個小創新點。以往咱們調用存儲過程時,只能在邏輯段裏手動寫參數名稱、存儲過程名稱。工具
這給咱們帶來了維護災難,同時最重要的是不支持硬編碼方式也是很不優雅的。在新版中實現了這一支持。學習
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。編碼
存儲過程實體類: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 }
存儲過程與表、視圖的區別比較大。在上面代碼中,看到使用了IsOutParam和IsInParam的特性。標記後,在執行存儲過程時,會根據這些標記生成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種方法用來操做。
這篇就結束在這,總結,其實沒什麼好總結的了。
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" });