zoukankan      html  css  js  c++  java
  • PetaPoco源代码学习--1.使用的Attribute介绍

    新版本的PetaPoco使用特性进行注解的形式来代替的老版本的映射类的形式。新版本中使用的特性主要包括以下几种:

    名称

     

    用途

    TableNameAttribute

    Class

    指定POCO实体类对应的数据库表名称

    ColumnAttribute

    Property

    指定POCO实体类属性对应的数据库表列名称

    PrimaryKeyAttribute

    Class

    指定POCO实体类对应的数据库表的主键列

    IgnoreAttribute

    Property

    指定POCO实体类属性不与数据库表列名称对应

    ResultColumnAttribute

    Property

    指定POCO实体类属性作为结果信息,只在查询时使用,插入和更新时不更新该列

    ExplicitColumnsAttribute

    Class

    指定POCO实体类属性必须使用ColumnAttribute或ResultColumnAttribute明确指定。

    ValueConverterAttribute

    Property

    指定POCO实体类属性的类型与数据库列的类型的转换

    • TableNameAttribute 数据库表名特性,只能应用于实体类
     1     /// <summary>
     2     ///  该特性用来指定POCO实体类所对应的数据库表名
     3     /// </summary>
     4     [AttributeUsage(AttributeTargets.Class)]
     5     public class TableNameAttribute : Attribute
     6     {
     7         /// <summary>
     8         ///  实体类对应的数据库表名称
     9         /// </summary>
    10         public string Value { get; private set; }
    11 
    12         /// <summary>
    13         ///  构造函数
    14         /// </summary>
    15         public TableNameAttribute(string tableName)
    16         {
    17             Value = tableName;
    18         }
    19     }
    20     
    21     //使用事例
    22     [TableName("Person")]
    23     public class Person
    24     {
    25         
    26     }
    •  ColumnAttribute,数据库表列名特性,只能用于类的属性。
     1     /// <summary>
     2     ///  该特性用于指定POCO实体类的属性对应的数据库表的列
     3     /// </summary>
     4     [AttributeUsage(AttributeTargets.Property)]
     5     public class ColumnAttribute : Attribute
     6     {
     7         /// <summary>
     8         /// 数据库表的列名称
     9         /// </summary>
    10         public string Name { get; set; }
    11 
    12         /// <summary>
    13         /// 列对应的属性如果是DataTime类型,表示是否需要转换为UTC时间格式
    14         /// </summary>
    15         public bool ForceToUtc { get; set; }
    16 
    17         /// <summary>
    18         /// 插入数据,将一些数据根据特定格式进行组合(暂未理解,后续添加)
    19         /// </summary>
    20         public string InsertTemplate { get; set; }
    21 
    22         /// <summary>
    23         /// 更新数据,将一些数据根据特定格式进行组合(暂未理解,后续添加)
    24         /// </summary>
    25         public string UpdateTemplate { get; set; }
    26 
    27         /// <summary>
    28         /// 构造函数   
    29         /// </summary>
    30         public ColumnAttribute()
    31         {
    32             ForceToUtc = false;
    33         }
    34 
    35         /// <summary>
    36         ///  构造函数
    37         /// </summary>
    38         public ColumnAttribute(string name)
    39         {
    40             Name = name;
    41             ForceToUtc = false;
    42         }
    43     }
    44     
    45     //使用事例
    46     [TableName("Person")]
    47     public class Person
    48     {
    49         [Column("id")]
    50         public string Id;
    51     }
    • PrimaryKeyAttribute 数据库表主键列特性,只能用于类。
     1     /// <summary>
     2     /// 该特性用于指定POCO实体类的属性对应的数据库表的列是否表的主键和自增信息
     3     /// Oracle数据库还需要指定Sequence名称
     4     /// </summary>
     5     [AttributeUsage(AttributeTargets.Class)]
     6     public class PrimaryKeyAttribute : Attribute
     7     {
     8         /// <summary>
     9         /// 数据库表的列名称
    10         /// </summary>
    11         public string Value { get; private set; }
    12 
    13         /// <summary>
    14         /// Sequence名称
    15         /// </summary>
    16         public string SequenceName { get; set; }
    17 
    18         /// <summary>
    19         /// 主键是否自增列
    20         /// </summary>
    21         public bool AutoIncrement { get; set; }
    22 
    23         /// <summary>
    24         /// 构造函数
    25         /// </summary>
    26         /// <param name="primaryKey">The name of the primary key column.</param>
    27         public PrimaryKeyAttribute(string primaryKey)
    28         {
    29             Value = primaryKey;
    30             AutoIncrement = true;
    31         }
    32     }
    33     
    34     //使用事例
    35     [TableName("Person")]
    36     [PrimaryKey("id")]
    37     public class Person
    38     {
    39         [Column("id")]
    40         public string Id;
    41     }
    • IgnoreAttribute类属性不与数据库表列名不进行对应特性,只能用于类的属性。
     1     /// <summary>
     2     /// 该特性用于指定POCO实体类的属性不与数据库表的列进行对应
     3     /// </summary>
     4     [AttributeUsage(AttributeTargets.Property)]
     5     public class IgnoreAttribute : Attribute
     6     {
     7     }
     8     
     9     //使用事例
    10     [TableName("Person")]
    11     [PrimaryKey("id")]
    12     public class Person
    13     {
    14         [Column("id")]
    15         public string Id;
    16         
    17         [Ignore]
    18         public FullName;
    19     }
    • ResultColumnAttribute数据库表列名特性,只能用于类的属性。
     1     /// <summary>
     2     ///  该特性用于指定POCO实体类的属性作为数据库表列的结果信息,更新和查询操作时不对该列进行操作。
     3     /// </summary>
     4     [AttributeUsage(AttributeTargets.Property)]
     5     public class ResultColumnAttribute : ColumnAttribute
     6     {
     7         /// <summary>
     8         /// 构造函数
     9         /// </summary>
    10         public ResultColumnAttribute()
    11         {
    12         }
    13 
    14         /// <summary>
    15         /// 构造函数
    16         /// </summary>
    17         public ResultColumnAttribute(string name)
    18             : base(name)
    19         {
    20         }
    21     }
    22     
    23     /使用事例
    24     [TableName("Person")]
    25     [PrimaryKey("id")]
    26     public class Person
    27     {
    28         [Column("id")]
    29         public string Id;
    30         
    31         [Ignore]
    32         public string FullName;
    33         
    34         
    35         [Result]
    36         public Float AnnualSalary{ get {return Salary*14;}}
    37     }
    •  ExplicitColumnsAttribute POCO实体类特性,只能用于类的属性。
    1     /// <summary>
    2     ///  该特性用于指定POCO实体类的属性使用ColumnAttribute或 ResultColumnAttribute明确指定对应关系。
    3     /// </summary>
    4     [AttributeUsage(AttributeTargets.Class)]
    5     public class ExplicitColumnsAttribute : Attribute
    6     {
    7     }
    • ValueConverterAttribute POCO实体类属性类型转换特性,只能用于类的属性
        /// <summary>
        /// 该特性用于指定POCO实体类的属性的类型和数据库列类型进行转换
        /// </summary>
        [AttributeUsage(AttributeTargets.Property)]
        public abstract class ValueConverterAttribute : Attribute
        {
            /// <summary>
            /// 属性类型转换为数据库列类型
            /// </summary>
            /// <param name="value">Property value</param>
            /// <returns>Converted database value</returns>
            public abstract object ConvertToDb(object value);
            /// <summary>
            /// 数据库列类型转换为属性类型
            /// </summary>
            /// <param name="value">Database value</param>
            /// <returns>Converted property type value</returns>
            public abstract object ConvertFromDb(object value);
        }
  • 相关阅读:
    跟结束进程相关的那些信号
    tcpdump使用示例
    Linux在bash history当中添加timestamp
    CentOS中在/etc/rc.local添加开机自启动项启动失败
    CentOS配置通过DHCP的方式动态获取IP
    CentOS桌面安装
    MySQL二进制安装
    对okhttp参数的一些思考
    依赖倒置原则(DIP)
    Liskov替换原则(LSP)
  • 原文地址:https://www.cnblogs.com/DreamOfLife/p/9108067.html
Copyright © 2011-2022 走看看