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">对象类型& ...
随机推荐
- ABP理论学习之内嵌资源文件
返回总目录 本篇目录 介绍 创建内嵌文件 暴露内嵌文件 使用内嵌文件 介绍 在一个web应用中,有供客户端使用的javascript,css,xml等文件.它们一般是作为分离的文件被添加到web项目中 ...
- 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用.下面的示例程序简单地分为两层,一个是应用程序层We ...
- 为CentOS7(文字界面操作)系统安装gnome图形界面程序
1.安装gnome sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools" ...
- 《Node即学即用》—— 读后总结
导图
- Android开发学习之路-Android Studio开发小技巧
上一次发过了一个介绍Studio的,这里再发一个补充下. 我们都知道,Android Studio的功能是非常强大的,也是很智能的.如果有人告诉你学Android开发要用命令行,你可以告诉他Andro ...
- TSQL Merge On子句和When not matched 语义理解
Merge 的On子句指定Match condition,When子句指定过滤条件,如果Source Table和Targe Table匹配的上,很好理解:如果匹配不上,必须深入理解不匹配的条件,否则 ...
- VS中行号对齐的辅助线(虚线)去除
3张图 2 3
- SVM算法
本文主要介绍支持向量机理论推导及其工程应用. 1 基本介绍 支持向量机算法是一个有效的分类算法,可用于分类.回归等任务,在传统的机器学习任务中,通过人工构造.选择特征,然后使用支持向量机作为训练器,可 ...
- Android Studio安装以及Fetching android sdk component information超时的解决方案
转载:http://www.cnblogs.com/sonyi/p/4154797.html 在经过两年的开发之本后,Google 公司终于发布了 Android Studio 1.0,喜欢折腾的童鞋 ...
- 访问外网 ML2 的配置 - 每天5分钟玩转 OpenStack(103)
通过 router 可以实现位于不同 vlan 中的 instance 之间的通信. 接下来要探讨的问题是 instance 如何与外部网络通信. 这里的外部网络是指的租户网络以外的网络. 租户网络是 ...