• Dapper的扩展这个你知道嘛?


     之前写的ORM对比文章中,我选Dapper作为底层ADO的基础访问框架后,我对此再次进行进一步的深入研究,发现里面还有延伸了一些好用的扩展方法和特性,那我便简单的跟大家说一下特性标签。

    一、TableAttribute 特性

      这个先对简单,就是对模型进行定义表名,如果你未标注表名特性,默认去模型类型名称,并且此特性只能标注在类上,不能标注在属性,方法等其它作用体上;

    二、KeyAttribute [隐式]主键特性

      为什么我把它定义隐式呢,关键在于在Insert时,如果你用它标记了一个属性,那这个属性的值无法对应插入到数据表里,比较适合自增类型主键和数据库默认有赋值的主键字段

      代码模拟:  

        [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)

     三、ExplicitKeyAttribute [显式]主键特性

      我之前也比较纳闷怎么需要定义两种KEY特性,在尝试DEMO后,就发现这个是可以作用在Insert上进行主键值插入

      代码模拟:

        [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)

    四、WriteAttribute 可写特性

      最简单的理解,如果在属性上这么标注:Write(false),表明不可写入,包括:Insert和Update,这个我就不贴代码了,很好理解

    五、ComputedAttribute 已计算过特性

      单词理解上我觉得就是表明这个属性值是自己计算,不参与任何Insert和Update,但可从数据表读取数据,所以如果在属性上标记这个将无法进行写入和更新值

    以上的扩展特性在项目:Dapper.Contrib上,大家在使用的的时候注意引用,此项目也是写Dapper的开发者编写的,请配合扩展方法:Get<T>,GetAll<T>, Insert<T>,Update<T>,Delete<T>,DeleteAll<T>

    以上如果有不对的地方,请多多指出!

  • 相关阅读:
    Python3 MySQL 数据库连接
    python3中线程池
    python中paramiko模块和mysql数据库的操作
    linux定制的补充
    linux 定制
    利用BIND搭建自己的私有根及授权域
    Python3下的paramiko模块
    mysql在linux下的安装与优化
    Linux下Nagios的安装与配置
    CentOS 6.7中安装python3.5
  • 原文地址:https://www.cnblogs.com/rjf1979/p/6496653.html
Copyright © 2020-2023  润新知