/// <summary> /// 添加当前实体对应数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public virtual DbEntity Insert <T>(T entity) { DbEntity dbEntity = null; if (entity == null) { return(dbEntity); } Type type = typeof(T); var attributeBuilder = new AttributeBuilder(); TableAttribute tableEntity = attributeBuilder.GetTableInfo(type); var columns = new AttributeBuilder().GetColumnInfos(type, entity); if (columns.Count < 0) { return(dbEntity); } if (columns.Where(a => !a.IsAutoIncrement).FirstOrDefault() == null) { return(dbEntity); } var noneAutoIncrementColumns = columns.Where(a => !a.IsAutoIncrement).ToList(); var dbOperator = DbFactory.GetDbParamOperator(); var dbParams = new List <IDbDataParameter>(); var sqlBuild = new StringBuilder("insert into {tableName}({columnNames}) values({columnValues})"); sqlBuild.Replace("{tableName}", tableEntity.TableName); var columnNameList = new List <string>(); var paramColumnList = new List <string>(); foreach (var column in noneAutoIncrementColumns) { columnNameList.Add(column.ColumnName); paramColumnList.Add(dbOperator + column.ColumnName); dbParams.Add(DbFactory.GetDbParam(column)); } sqlBuild.Replace("{columnNames}", string.Join(",", columnNameList)); sqlBuild.Replace("{columnValues}", string.Join(",", paramColumnList)); dbEntity = new DbEntity() { TableEntity = tableEntity, CommandText = sqlBuild.ToString(), DbParams = dbParams }; return(dbEntity); }
/// <summary> /// 添加单条数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public virtual DbEntity Insert <T>(T entity) { DbEntity dbEntity = null; if (entity == null) { return(dbEntity); } Type type = typeof(T); var attributeBuilder = new AttributeBuilder(); TableAttribute tableEntity = attributeBuilder.GetTableInfo(type); var columns = new AttributeBuilder().GetColumnInfos(type, entity); if (columns == null || columns.Count < 0) { return(dbEntity); } if (columns.Where(a => !a.IsAutoIncrement).FirstOrDefault() == null) { return(dbEntity); } var noAutoIncrementColumns = columns.Where(a => !a.IsAutoIncrement && !a.IsIgnoreAdd).ToList(); var dbOperator = DbFactory.GetDbParamOperator(); var dbParams = new List <IDbDataParameter>(); var sqlBuilder = new StringBuilder("insert into {tableName}({columnNames}) values({columnValues});"); sqlBuilder.Replace("{tableName}", tableEntity.TableName); #region 处理添加字段及参数SQL语句 var addItem = HandleAddColumnValueParam(noAutoIncrementColumns, sqlBuilder, dbParams); sqlBuilder = addItem.Item1; dbParams = addItem.Item2; #endregion #region 处理自动增长列Sql var autoIncrementColumn = columns.Where(a => a.IsAutoIncrement).FirstOrDefault(); if (tableEntity.IsGetAutoIncrementValue && autoIncrementColumn != null) { var dbTypeValue = Convert.ToInt32(CurrentDbType); switch (dbTypeValue) { case 1: case 2: sqlBuilder.Append(GetAutoIncrementSql()); break; case 3: sqlBuilder.AppendFormat(GetAutoIncrementSql(), autoIncrementColumn.ColumnName); break; case 4: sqlBuilder.AppendFormat(GetAutoIncrementSql(), tableEntity.TableName); break; } } else { tableEntity.IsGetAutoIncrementValue = false; } #endregion dbEntity = new DbEntity() { TableEntity = tableEntity, CommandText = sqlBuilder.ToString(), DbParams = dbParams }; return(dbEntity); }