public virtual SqlConvertResult Update(IClassMapper classMapper, string condition, DynamicParameters dynamicParameters, object entity = null) { if (dynamicParameters == null) { throw new ArgumentNullException("dynamicParameters"); } var columnMaps = classMapper.GetColumnMaps(); if (!columnMaps.Any()) { throw new ArgumentException("没有被映射的列。"); } if (entity != null) { IPropertyMap propertyChangedListMap = classMapper.GetPropertyChangedListMap(); if (propertyChangedListMap != null) { IList <string> propertyChangedList = propertyChangedListMap.PropertyInfo.GetValue(entity, null) as IList <string>; if (propertyChangedList != null && propertyChangedList.Count > 0) { propertyChangedList = propertyChangedList.Distinct().ToList(); IList <IPropertyMap> propertyMaps = new List <IPropertyMap>(); foreach (string name in propertyChangedList) { if (string.IsNullOrWhiteSpace(name)) { continue; } IPropertyMap propertyMap = columnMaps.FirstOrDefault(m => m != null && string.Compare(m.Name, name.Trim(), StringComparison.OrdinalIgnoreCase) == 0); if (propertyMap != null) { propertyMaps.Add(propertyMap); } } columnMaps = propertyMaps; } } } SqlConvertResult result = SqlConvert(classMapper, condition, dynamicParameters); var setSql = columnMaps.Select(p => string.Format("{0} = {1}{2}", GetColumnName(classMapper, p, false), DbProvider.ParameterPrefix, p.Name)); string updateSql = string.Format("UPDATE {0} SET {1} WHERE {2}", GetTableName(classMapper), setSql.AppendStrings(), result.Sql); result.Sql = updateSql; return(result); }
public virtual SqlConvertResult Insert(IClassMapper classMapper, DynamicParameters dynamicParameters) { SqlConvertResult result = SqlConvert(classMapper, null, dynamicParameters); var columnMaps = classMapper.GetColumnMaps(); if (!columnMaps.Any()) { throw new ArgumentException("没有被映射的列。"); } var columnNames = columnMaps.Select(p => GetColumnName(classMapper, p, false)); var parameterNames = columnMaps.Select(p => DbProvider.ParameterPrefix + p.Name); string sql = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", GetTableName(classMapper), columnNames.AppendStrings(), parameterNames.AppendStrings()); result.Sql = sql; return(result); }