博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PetaPoco源代码学习--1.使用的Attribute介绍
阅读量:5367 次
发布时间:2019-06-15

本文共 5421 字,大约阅读时间需要 18 分钟。

新版本的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     ///  2     ///  该特性用来指定POCO实体类所对应的数据库表名 3     ///  4     [AttributeUsage(AttributeTargets.Class)] 5     public class TableNameAttribute : Attribute 6     { 7         ///  8         ///  实体类对应的数据库表名称 9         /// 10         public string Value { get; private set; }11 12         /// 13         ///  构造函数14         /// 15         public TableNameAttribute(string tableName)16         {17             Value = tableName;18         }19     }20     21     //使用事例22     [TableName("Person")]23     public class Person24     {25         26     }
  •  ColumnAttribute,数据库表列名特性,只能用于类的属性。
1     ///  2     ///  该特性用于指定POCO实体类的属性对应的数据库表的列 3     ///  4     [AttributeUsage(AttributeTargets.Property)] 5     public class ColumnAttribute : Attribute 6     { 7         ///  8         /// 数据库表的列名称 9         /// 10         public string Name { get; set; }11 12         /// 13         /// 列对应的属性如果是DataTime类型,表示是否需要转换为UTC时间格式14         /// 15         public bool ForceToUtc { get; set; }16 17         /// 18         /// 插入数据,将一些数据根据特定格式进行组合(暂未理解,后续添加)19         /// 20         public string InsertTemplate { get; set; }21 22         /// 23         /// 更新数据,将一些数据根据特定格式进行组合(暂未理解,后续添加)24         /// 25         public string UpdateTemplate { get; set; }26 27         /// 28         /// 构造函数   29         /// 30         public ColumnAttribute()31         {32             ForceToUtc = false;33         }34 35         /// 36         ///  构造函数37         /// 38         public ColumnAttribute(string name)39         {40             Name = name;41             ForceToUtc = false;42         }43     }44     45     //使用事例46     [TableName("Person")]47     public class Person48     {49         [Column("id")]50         public string Id;51     }
  • PrimaryKeyAttribute 数据库表主键列特性,只能用于类。
1     ///  2     /// 该特性用于指定POCO实体类的属性对应的数据库表的列是否表的主键和自增信息 3     /// Oracle数据库还需要指定Sequence名称 4     ///  5     [AttributeUsage(AttributeTargets.Class)] 6     public class PrimaryKeyAttribute : Attribute 7     { 8         ///  9         /// 数据库表的列名称10         /// 11         public string Value { get; private set; }12 13         /// 14         /// Sequence名称15         /// 16         public string SequenceName { get; set; }17 18         /// 19         /// 主键是否自增列20         /// 21         public bool AutoIncrement { get; set; }22 23         /// 24         /// 构造函数25         /// 26         /// The name of the primary key column.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 Person38     {39         [Column("id")]40         public string Id;41     }
  • IgnoreAttribute类属性不与数据库表列名不进行对应特性,只能用于类的属性。
1     ///  2     /// 该特性用于指定POCO实体类的属性不与数据库表的列进行对应 3     ///  4     [AttributeUsage(AttributeTargets.Property)] 5     public class IgnoreAttribute : Attribute 6     { 7     } 8      9     //使用事例10     [TableName("Person")]11     [PrimaryKey("id")]12     public class Person13     {14         [Column("id")]15         public string Id;16         17         [Ignore]18         public FullName;19     }
  • ResultColumnAttribute数据库表列名特性,只能用于类的属性。
1     ///  2     ///  该特性用于指定POCO实体类的属性作为数据库表列的结果信息,更新和查询操作时不对该列进行操作。 3     ///  4     [AttributeUsage(AttributeTargets.Property)] 5     public class ResultColumnAttribute : ColumnAttribute 6     { 7         ///  8         /// 构造函数 9         /// 10         public ResultColumnAttribute()11         {12         }13 14         /// 15         /// 构造函数16         /// 17         public ResultColumnAttribute(string name)18             : base(name)19         {20         }21     }22     23     /使用事例24     [TableName("Person")]25     [PrimaryKey("id")]26     public class Person27     {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     /// 2     ///  该特性用于指定POCO实体类的属性使用ColumnAttribute或 ResultColumnAttribute明确指定对应关系。3     /// 4     [AttributeUsage(AttributeTargets.Class)]5     public class ExplicitColumnsAttribute : Attribute6     {7     }
  • ValueConverterAttribute POCO实体类属性类型转换特性,只能用于类的属性
///     /// 该特性用于指定POCO实体类的属性的类型和数据库列类型进行转换    ///     [AttributeUsage(AttributeTargets.Property)]    public abstract class ValueConverterAttribute : Attribute    {        ///         /// 属性类型转换为数据库列类型        ///         /// Property value        /// 
Converted database value
public abstract object ConvertToDb(object value); /// /// 数据库列类型转换为属性类型 /// /// Database value ///
Converted property type value
public abstract object ConvertFromDb(object value); }

转载于:https://www.cnblogs.com/DreamOfLife/p/9108067.html

你可能感兴趣的文章
ReportViewer实例教程(转载)
查看>>
php中文文件is_file检验失败(编码问题)
查看>>
也说Socket
查看>>
[置顶] 文章索引::”机器学习方法“,"深度学习方法",“三十分钟理解”原创系列...
查看>>
Storm概念学习系列之核心概念(Tuple、Spout、Blot、Stream、Stream Grouping、Worker、Task、Executor、Topology)(博主推荐)...
查看>>
Python 爬虫工程师必学 App数据抓取实战
查看>>
SQLServer数据库设计规范
查看>>
Visual C++中使用ADO访问数据库
查看>>
MySQL Python教程(3)
查看>>
360随身WiFi使用问题解决,无法在没有网络的电脑上使用
查看>>
redis提示ERR unknown command 'PSETEX'
查看>>
React介绍
查看>>
lvs源代码分析
查看>>
[tech] Emacs cperl-mode auto-insert perl head info
查看>>
Kattis之旅——Divisible Subsequences
查看>>
跟我一起学extjs5(20--模块Grid的其它功能的设想,前20节源代码)
查看>>
编程算法 - 数字在排序数组中出现的次数 代码(C)
查看>>
CSS为英文和中文字体分别设置不同的字体
查看>>
自定义字段
查看>>
Windows下的多线程
查看>>