[Orm.Table( "TestORM" )]
public class TestORM
{
[Orm.Colum( "Id" ,DbType.Int32)]
public int Id { get ; set ; }
[Orm.Colum( "UserName" , DbType.String)]
public string UserName { get ; set ; }
[Orm.Colum( "Password" , DbType.String)]
public string Password { get ; set ; }
[Orm.Colum( "CreatedTime" , DbType.DateTime)]
public DateTime CreatedTime { get ; set ; }
}
protected void Button3_Click( object sender, EventArgs e)
{
TestORM t = new TestORM()
{
Id=1,
UserName= "binfire" ,
Password= "xxx" ,
CreatedTime=DateTime.Now
};
Orm.OrmHelp h= new Orm.OrmHelp();
h.Insert(t);
}
namespace Orm
{
[AttributeUsageAttribute(AttributeTargets.Class, Inherited = false , AllowMultiple = false )]
public class TableAttribute : Attribute
{
//保存表名的字段
private string _tableName;
public TableAttribute()
{
}
public TableAttribute( string tableName)
{
this ._tableName = tableName;
}
///
/// 映射的表名(表的全名:模式名.表名)
///
public string TableName
{
set
{
this ._tableName = value;
}
get
{
return this ._tableName;
}
}
}
[AttributeUsageAttribute(AttributeTargets.Property, Inherited = false , AllowMultiple = false )]
public class ColumAttribute : Attribute
{
private string _columName;
private DbType _dbType;
public ColumAttribute()
{
}
public ColumAttribute( string columName)
: this ()
{
this ._columName = columName;
}
public ColumAttribute( string columName, DbType dbType)
: this (columName)
{
this ._dbType = dbType;
}
//列名
public virtual string ColumName
{
set
{
this ._columName = value;
}
get
{
return this ._columName;
}
}
//描述一些特殊的數(shù)據(jù)庫類型
public DbType DbType
{
get { return _dbType; }
set { _dbType = value; }
}
}
public class OrmHelp
{
public void Insert( object table)
{
Type type = table.GetType();
//定義一個字典來存放表中字段和值的對應(yīng)序列
Dictionary< string , string > columValue = new Dictionary< string , string >();
StringBuilder SqlStr = new StringBuilder();
SqlStr.Append( "insert into " );
//得到表名子
TableAttribute temp = (TableAttribute)type.GetCustomAttributes( typeof (TableAttribute), false ).First();
SqlStr.Append(temp.TableName);
SqlStr.Append( "(" );
PropertyInfo[] Propertys = type.GetProperties();
foreach ( var item in Propertys)
{
object [] attributes = item.GetCustomAttributes( false );
foreach ( var item1 in attributes)
{
//獲得相應(yīng)屬性的值
string value = table.GetType().InvokeMember(item.Name, System.Reflection.BindingFlags.GetProperty, null , table, null ).ToString();
ColumAttribute colum = item1 as ColumAttribute;
if (colum != null )
{
columValue.Add(colum.ColumName, value);
}
}
}
//拼插入操作字符串
foreach ( var item in columValue)
{
SqlStr.Append(item.Key);
SqlStr.Append( "," );
}
SqlStr.Remove(SqlStr.Length - 1, 1);
SqlStr.Append( ") values('" );
foreach ( var item in columValue)
{
SqlStr.Append(item.Value);
SqlStr.Append( "','" );
}
SqlStr.Remove(SqlStr.Length - 2, 2);
SqlStr.Append( ")" );
HttpContext.Current.Response.Write(SqlStr.ToString());
}
}
}
|