以前寫的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>
以上若是有不對的地方,請多多指出!