ORM架构基础,通过反射获取SQL字符串

什么是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; }
            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值