C#利用反射+特性实现简单的实体映射数据库操作类
附上源代码:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 反射_特性
{
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class FieldAttribute : Attribute
{
private string _Fields;
/// <summary>
/// 字段名称 keleyi.com
/// </summary>
public string Fields
{
get { return _Fields; } } private DbType _Dbtype;
/// <summary>
/// 字段类型
/// </summary>
public DbType Dbtype
{
get { return _Dbtype; } } private int _ValueLength;
/// <summary>
/// 字段值长度
/// </summary>
public int ValueLength
{
get { return _ValueLength; } }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="fields"> 字段名</param>
/// <param name="types"> 字段类型</param>
/// <param name="i"> 字段值长度</param>
public FieldAttribute(string fields, DbType types, int i)
{ _Fields = fields;
_Dbtype = types;
_ValueLength = i;
}
}
}
2:表名特性
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 反射_特性
{
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class TableAttribute : Attribute
{
private string _TableName;
/// <summary>
/// 映射的表名
/// </summary>
public string TableName
{
get { return _TableName; }
}
/// <summary>
/// 定位函数映射表名;
/// </summary>
/// <param name="table"></param>
public TableAttribute(string table)
{
_TableName = table;
}
}
}
3:特性测试类
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 特性_反射
{
[Table("Consumers")]
public class UserInf
{
private string _UserID;
/// <summary>
/// 登陆ID
/// </summary>
[Field("ConsumerID", DbType.String, )]
public string U_UserID
{
get { return _UserID; }
set { _UserID = value; }
} private string _Psw;
/// <summary>
/// 登陆密码
/// </summary>
[Field("ConsumerPwd", DbType.String, )]
public string U_Psw
{
get { return _Psw; }
set { _Psw = value; }
} private string _UserName;
/// <summary>
/// 用户别称
/// </summary>
[Field("ConsumerName", DbType.String, )]
public string U_UserName
{
get { return _UserName; }
set { _UserName = value; }
} private string _City;
/// <summary>
/// 所住城市
/// </summary>
[Field("UserCity", DbType.String, )]
public string U_City
{
get { return _City; }
set { _City = value; }
} private int _Popedom;
/// <summary>
/// 权限
/// </summary>
[Field("popedom", DbType.Int32, )]
public int U_Popedom
{
get { return _Popedom; }
set { _Popedom = value; }
} private DateTime _AddDataTime;
/// <summary>
/// 注册时间
/// </summary>
[Field("addDataTime", DbType.Date, )]
public DateTime U_AddDataTime
{
get { return _AddDataTime; }
set { _AddDataTime = value; }
} private int _Sex;
/// <summary>
/// 性别
/// </summary>
[Field("Sex", DbType.Int32, )]
public int U_Sex
{
get { return _Sex; }
set { _Sex = value; }
} private int _BirthTime;
/// <summary>
/// 出身日期;
/// </summary>
[Field("BirthTime", DbType.String, )]
public int U_BirthTime
{
get { return _BirthTime; }
set { _BirthTime = value; }
}
}
}
4:测试控制台程序
UserInf userss = new UserInf();
userss.U_UserID = "aw12311";
userss.U_Psw = "";
userss.U_UserName = "aw";
userss.U_City = "武汉";
userss.U_Popedom = ;
userss.U_Sex = ;
userss.U_BirthTime = ;
userss.U_AddDataTime = DateTime.Now; DateIsTableAttribute<UserInf> t = new DateIsTableAttribute<UserInf>(); Response.Write(" </br>" + t.insertDate(userss));
http://www.cnblogs.com/sosoft/
C#利用反射+特性实现简单的实体映射数据库操作类的更多相关文章
- 利用反射跟自定义注解拼接实体对象的查询SQL
前言 项目中虽然有ORM映射框架来帮我们拼写SQL,简化开发过程,降低开发难度.但难免会出现需要自己拼写SQL的情况,这里分享一个利用反射跟自定义注解拼接实体对象的查询SQL的方法. 代码 自定义注解 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- 一个简单的ORM制作(CURD操作类)
SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- C# 如何利用反射,将字符串转化为类名并调用类中方法
首先,先随便创建一个测试类 <span style="font-family:Microsoft YaHei;font-size:18px;">public class ...
- 【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)
上次在<[php]利用原生态的JavaScript Ajax为php进行MVC分层设计,兼容IE6>(点击打开链接) 一文中,对于php查询Mysql数据库的model.php写法还不够完 ...
- 简单的php数据库操作类代码(增,删,改,查)
这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...
- 利用反射将IDataReader读取到实体类中效率低下的解决办法
最开始使用反射一个类型的各个属性,对气进行赋值的代码如下: public static List<T> ToList<T>(IDataReader reader) { //实例 ...
- C# 利用反射动态将字符串转换成属性对应的类型值
/// <summary> /// 为指定对象分配参数 /// </summary> /// <typeparam name="T">对象类型& ...
随机推荐
- SOA相关资料整理分享
昨@幸福框架同学问能否推荐SOA一些资,.想想之前看过不少资料文档,就整理分享下,有需要的可以参考下. 文章链接 理解面向服务的体系结构中企业服务总线场景和解决方案,第 1 部分 SOA 和 web ...
- [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...
- [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起
[Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起 在上一篇里我给出了重制的坦克舰队效果图和试玩程序.本篇介绍一下玩家坦克和敌方坦克碰撞问题. +BIT祝威+悄悄在此留下版了个 ...
- 干货!表达式树解析"框架"(3)
最新设计请移步 轻量级表达式树解析框架Faller http://www.cnblogs.com/blqw/p/Faller.html 这应该是年前最后一篇了,接下来的时间就要陪陪老婆孩子了 关于表达 ...
- 前段播放 流媒体(RTMP,RTSP,HLS)
前言 最近项目需要流媒体的播放,后端一共提供了 三种流数据(RTSP,RTMP,HLS),在不同的场景可能会使用到不同方式播放,就需要做到适配, 支持所有的流数据播放.花了一段时间研究,在这里和大家分 ...
- 浅谈JavaScript的New关键字
原型和闭包算是JavaScript中最常见,最难以理解,最容易被当做问题的两个部分,当然还有它们的延伸,如作用域链,继承等等吧,我最近也是各种看,各种翻,记录点自己的心得,写写总会让自己的理解更深一些 ...
- sizzle分析记录:分解流程
<form> <label>Name:</label> <input name="name" /> <fieldset> ...
- UGUI 之获取当前控件的高度
当Canvas Scaler选择Constant Pixel Size 当前的分辨率会被被固定,可以用RectTransform类里面的.rect变量值获取 height或Width. 在次情况下获取 ...
- 传智播客--XAML布局--连连看界面(小白内容)
一个简单的10*10连连看,有100个格子,可以在XAML里面用ColumnDefinition和RowDefinition各写10组,但是这样效率会很慢,因此,可以采用动态生成的方式进行. publ ...
- AOE网的关键路径的计算
求关键路径,只需理解顶点(事件)和边(活动)各自的两个特征属性以及求法即可: Ø 先根据首结点的Ve(j)=0由前向后(正拓扑序列)计算各顶点的最早发生时间 Ø 再根据终结点的Vl(j)等于它的V ...