第1510行到2012代码 public int Insert<T>(T obj) { DbConnection dcon = null; DbCommand dcom = null; try { dcon = Conn.getConn(); dcon.Open(); dcom = dcon.CreateCommand(); string SqlStr = "insert {tablename} ({namestr}) values({varstr})"; string pKey = GetPrimaryKey<T>(); SqlStr = SqlStr.Replace("{tablename}", "[" + typeof(T).Name + "]"); string varstr = ""; string namestr = ""; foreach (PropertyInfo pro in typeof(T).GetProperties()) { if (pro.Name.ToLower() != pKey.ToLower()) { namestr += "," + pro.Name; varstr += ",@" + pro.Name; DbParameter par = dcom.CreateParameter(); par.ParameterName = "@" + pro.Name; par.Value = ChargeValue(pro, obj); par.DbType = GetDbType(pro); dcom.Parameters.Add(par); } } varstr = varstr.Substring(1); namestr = namestr.Substring(1); SqlStr = SqlStr.Replace("{namestr}", namestr); SqlStr = SqlStr.Replace("{varstr}", varstr); dcom.CommandText = SqlStr; int i = dcom.ExecuteNonQuery(); dcom.Parameters.Clear(); dcom.CommandText = "select @@identity"; string id = dcom.ExecuteScalar().ToString(); object idval = obj.GetType().GetProperty(pKey).PropertyType.GetMethod("Parse", new Type[] { typeof(string) }).Invoke(null, new object[] { id }); obj.GetType().GetProperty(pKey).SetValue(obj, idval, null); return i; } catch (Exception ex) { throw ex; } finally { dcom.Dispose(); dcon.Close(); dcon.Dispose(); } } public int InsertWithPK<T>(T obj) { DbConnection dcon = null; DbCommand dcom = null; try { dcon = Conn.getConn(); dcon.Open(); dcom = dcon.CreateCommand(); string SqlStr = "insert {tablename} ({namestr}) values({varstr})"; string pKey = GetPrimaryKey<T>(); SqlStr = SqlStr.Replace("{tablename}", "[" + typeof(T).Name + "]"); string varstr = ""; string namestr = ""; foreach (PropertyInfo pro in typeof(T).GetProperties()) { namestr += "," + pro.Name; varstr += ",@" + pro.Name; DbParameter par = dcom.CreateParameter(); par.ParameterName = "@" + pro.Name; par.Value = ChargeValue(pro, obj); par.DbType = GetDbType(pro); dcom.Parameters.Add(par); } varstr = varstr.Substring(1); namestr = namestr.Substring(1); SqlStr = SqlStr.Replace("{namestr}", namestr); SqlStr = SqlStr.Replace("{varstr}", varstr); dcom.CommandText = SqlStr; int i = dcom.ExecuteNonQuery(); dcom.Parameters.Clear();