コード例 #1
0
        /// <summary>
        /// 添加对象到数据库,
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="tbname"></param>
        /// <param name="model"></param>
        /// <param name="autoSetId"></param>
        public virtual void Add <T>(String tbname, T model, Boolean autoSetId)
        {
            if (model == null)
            {
                throw new Exception("添加的对象不能为空");
            }
            var  sql1           = new StringBuilder();
            var  sql2           = new StringBuilder();
            var  i              = 0;
            var  paramValueList = new List <Object>();
            Type type           = model.GetType();

            PropertyInfo[] pis = type.GetProperties();
            foreach (PropertyInfo pi in pis)
            {
                var name  = pi.Name;
                var value = pi.GetValue(model, null);
                if (value == null || value.Equals(_dialect.DefaultForType(pi.GetType())))
                {
                    //如果值是默认状态,则跳过
                    continue;
                }

                sql1.Append(name + ",");
                sql2.AppendFormat("{{{0}}},", i++);
                paramValueList.Add(value);
            }

            if (sql1.Length > 0)
            {
                sql1.Remove(sql1.Length - 1, 1);//移除最后的","
                sql2.Remove(sql2.Length - 1, 1);
            }

            var sql = "insert into " + tbname + " (" + sql1 + ") values (" + sql2 + ")";

            if (autoSetId)
            {
                var    cmdText = sql + " " + AutoIncreSql();
                object id      = int.Parse(ExecuteScalar(cmdText, paramValueList.ToArray()).ToString());
                SetIdValue(model, id);//设置model的Id属性的值
            }
            else
            {
                Execute(sql, paramValueList.ToArray());
            }
        }