Dapper的擴展這個你知道嘛?

 以前寫的ORM對比文章中,我選Dapper做爲底層ADO的基礎訪問框架後,我對此再次進行進一步的深刻研究,發現裏面還有延伸了一些好用的擴展方法和特性,那我便簡單的跟你們說一下特性標籤。html

1、TableAttribute 特性數據庫

  這個先對簡單,就是對模型進行定義表名,若是你未標註表名特性,默認去模型類型名稱,而且此特性只能標註在類上,不能標註在屬性,方法等其它做用體上;app

2、KeyAttribute [隱式]主鍵特性框架

  爲何我把它定義隱式呢,關鍵在於在Insert時,若是你用它標記了一個屬性,那這個屬性的值沒法對應插入到數據表裏,比較適合自增類型主鍵和數據庫默認有賦值的主鍵字段ui

  代碼模擬:  spa

    [Table("Person")]
    public class Person
    {
        [Key]
        public Guid ID { get; set; }
        public string Name { get; set; }
    
public byte Age { get; set; } }
  //最終的腳本是:INSERT INTO [
Person] (Name,Age) VALUES (@Name,@Age)

 3、ExplicitKeyAttribute [顯式]主鍵特性code

  我以前也比較納悶怎麼須要定義兩種KEY特性,在嘗試DEMO後,就發現這個是能夠做用在Insert上進行主鍵值插入htm

  代碼模擬:blog

    [Table("Person")]
    public class Person
    {
        [ExplicitKey]
        public Guid ID { get; set; }
        public string Name { get; set; }
     public byte Age { get; set; }
    }
  //最終的腳本是:INSERT INTO [Person] (ID,Name,Age) VALUES (@ID,@Name,@Age)

4、WriteAttribute 可寫特性ci

  最簡單的理解,若是在屬性上這麼標註:Write(false),代表不可寫入,包括:Insert和Update,這個我就不貼代碼了,很好理解

5、ComputedAttribute 已計算過特性

  單詞理解上我以爲就是代表這個屬性值是本身計算,不參與任何Insert和Update,但可從數據表讀取數據,因此若是在屬性上標記這個將沒法進行寫入和更新值

以上的擴展特性在項目:Dapper.Contrib上,你們在使用的的時候注意引用,此項目也是寫Dapper的開發者編寫的,請配合擴展方法:Get<T>,GetAll<T>, Insert<T>,Update<T>,Delete<T>,DeleteAll<T>

以上若是有不對的地方,請多多指出!

相關文章
相關標籤/搜索