zoukankan      html  css  js  c++  java
  • 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>

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

  • 相关阅读:
    单点登录原理与简单实现
    python pandas自定义函数之apply函数用法
    python应用-scipy,numpy,sympy计算微积分
    数据预处理-数据规约
    主成分分析python代码实现
    缺失值处理与格朗日插值法
    python pandas数据分析操作
    数据探索-数据特征分析
    数据探索-数据质量分析
    python -matplotlib figure操作
  • 原文地址:https://www.cnblogs.com/rjf1979/p/6496653.html
Copyright © 2011-2022 走看看