用attribute实现ORM
来源:互联网 发布:莱阳螳螂拳淘宝 编辑:程序博客网 时间:2024/06/10 00:31
听说很多ORM框架都是用XML映属性和表字段的关系,现在看来用C#里的attribute好像也很方便。
namespace ConsoleApplication4
{
class Class1
{
static void Main()
{
person p = new person();
p.Name = "韩梅梅";
p.Sex = "女";
p.Age = 14;
DBAccess dba = new DBAccess();
dba.AddPerson(p);//
}
}
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true,Inherited=false)]
public class DataFieldAttribute: Attribute
{
string _FieldName;
string _FieldType;
public DataFieldAttribute(string fieldName, string fieldType)
{
_FieldName = fieldName;
_FieldType = fieldType;
}
public string FieldName
{
set { _FieldName =value; }
get { return _FieldName; }
}
public string FiledType
{
set { _FieldType = value; }
get { return _FieldType; }
}
}
public class person
{
string _name;
string _sex;
int _age;
[DataField("name","nvarchar")]
public string Name
{
set { _name = value; }
get { return _name; }
}
[DataField("sex","nvarchar")]
public string Sex
{
set { _sex = value; }
get { return _sex; }
}
[DataField("age","int")]
public int Age
{
set { _age = value; }
get { return _age; }
}
}
public class DBAccess
{
public void AddPerson(person p)
{
string[,] fieldPair = new string[3, 2];
PropertyInfo[] arrPro = p.GetType().GetProperties();
for (int i = 0; i < arrPro.Length;i++ )
{
object[] arrAttr = arrPro[i].GetCustomAttributes(typeof(DataFieldAttribute), false);
string colName = ((DataFieldAttribute)arrAttr[0]).FieldName;//每个属性只有一个attribute
string colValue = arrPro[i].GetValue(p, null).ToString();
fieldPair[i, 0] = colName;
fieldPair[i, 1] = colValue;
}
StringBuilder sb = new StringBuilder();
sb.AppendFormat("INSERT INTO TablePerson({0},{1},{2})",fieldPair[0,0],fieldPair[1,0],fieldPair[2,0]);
sb.AppendFormat(" VALUES('{0}','{1}',{2})", fieldPair[0, 1], fieldPair[1, 1], fieldPair[2, 1]);
int l = fieldPair.Length;
string strSql = sb.ToString();
//执行sql语句;
}
}
- 用attribute实现ORM
- D2010 RTTI + Attribute 简单实现ORM
- D2010 RTTI + Attribute 简单实现ORM
- D2010 RTTI + Attribute 简单实现ORM
- Delphi2010 RTTI + Attribute 简单实现ORM实例
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
- 实现自己的ORM(反射以及Attribute在ORM中的应用)
- 用Python实现ORM
- Db Attribute(Custom ORM ) Usage
- 自己动手打造ORM(三) —自定义Attribute
- 用C++实现自己的ORM框架
- C# 用Attribute实现AOP事务
- \t\tC# 用Attribute实现AOP事务
- C# 用Attribute实现AOP事务
- C#:反射以及Attribute在ORM中的应用
- C#:反射以及Attribute在ORM中的应用
- C#制作ORM映射学习笔记一 自定义Attribute类
- hibernate ORM实现原理
- C++未眠夜----我学习C++的心路历程
- (原创)C语言计算两个日期间的天数
- 快速选择算法
- 用户 'sa' 登录失败及Sa密码相关处理
- struts2 ModelDriven
- 用attribute实现ORM
- poj2756解题报告
- QT调用mplayer
- 激活雪豹上的LAMP
- java中的instanceof 关键字
- 用Ogre生成天龙八部的lightmap和minimap的简单方法
- win7系统如何开启AHCI
- Code::Blocks搭配VC8编译资源文件
- 百度搜索技术沙龙感悟