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>

以上若是有不对的地方,请多多指出!

相关文章
相关标签/搜索