什么是ORM
即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
怎么搭建一个ORM框架
基础则是通过反射获取一个对数据库操作的SQL语句,核心内容即为不去写SQL语句即可完成对数据库的操作。例如以下代码:
Companytable companytable = new Companytable();
companytable.code = "woniuw";
companytable.name = "蜗牛王";
companytable.number = 123456;
companytable.createTime = DateTime.Now;
string sql = GetInsertString(companytable);
protected string GetInsertString<T>(T t)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(string.Format("insert into [{0}] ({1}) values", t.GetType().Name, GetTableString(t)));
System.Text.StringBuilder sb1 = new System.Text.StringBuilder();
PropertyInfo[] pps = GetPropertyInfos(t.GetType());
foreach (var pp in pps)
{
object o = pp.GetValue(t, null);
if (o != null)
{
sb1.Append(string.Format("'{0}',", o.ToString().Replace("'", "''")));// Replace("{", "''").Replace("}", "''")));
}
else
{
sb1.Append("'',");
}
}
return sb.ToString() + string.Format("({0})", sb1.ToString().Substring(0, sb1.ToString().LastIndexOf(',')));
}
protected string GetTableString<T>(T t)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
PropertyInfo[] pps = GetPropertyInfos(t.GetType());
foreach (var pp in pps)
{
sb.Append(string.Format("{0},", pp.Name));// Replace("{", "''").Replace("}", "''")));
}
return sb.ToString().Substring(0, sb.ToString().LastIndexOf(','));
}
public class Companytable
{
string _code;
public string code
{
get { return _code; }
set { _code = value; }
}
string _name;
public string name
{
get { return _name; }
set { _name = value; }
}
int _number;
public int number
{
get { return _number; }
set { _number = value; }
}
DateTime _createTime;
public DateTime createTime
{
get { return _createTime; }
set { _createTime = value; }
}
string _status;
public string status
{
get { return _status; }
set { _status = value; }
}
}