/// <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()); } }