/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public int Insert(TableBase model) { var tableType = model.GetType(); var tableAttr = AttrCache.Get(tableType); var cmd = Provider.CreateCommand(); cmd.CommandText = SqlInsert(tableAttr); cmd.CommandType = System.Data.CommandType.Text; cmd.Connection = Connection; DbParameter par = null; foreach (var column in tableAttr.Columns) { par = Provider.CreateParameter(); par.Direction = ParameterDirection.Input; par.ParameterName = ParamPerFix + column.Name; par.DbType = column.DbType; if (model.IsChangeColumn(column.Name)) { par.Value = Special.FixValue(column.GetValue(model)); } else { par.Value = column.DefaultVal; } if (!column.Nullable && par == null) { throw new System.Data.NoNullAllowedException(tableAttr.Name + "." + column.Name); } cmd.Parameters.Add(par); } try { Connection.Open(); return(cmd.ExecuteNonQuery()); } catch (DbException ex) { throw ex; } finally { Connection.Close(); } }