public static string CreateByType(IDbCommand command, BinaryExpression exp, EntityStruct obj) { var type = obj.Key; var tableName = CommonCommandBuilder.GetTableName(type); var cmdBulder = new StringBuilder(string.Format(@" UPDATE [{0}].[{1}].[{2}] ", command.Connection.Database, CommonCommandBuilder.DbSchemaName, tableName)); var nameValuePairs = CommonCommandBuilder.FieldByValueClauseBuilder(type, obj.Value); var parameterizatedNames = nameValuePairs.Select( x => new KeyValuePair <string, string>(x.Key, CommonCommandBuilder.GetParamsFormat(x.Key, x.Value, command.Connection.Database)) ); foreach (var pair in nameValuePairs) { var prop = CommonCommandBuilder.GetPropertyByAttrName(type, pair.Key); var parameter = command.CreateParameter(); parameter.ParameterName = CommonCommandBuilder.GetParamsFormat(pair.Key, pair.Value, command.Connection.Database); parameter.DbType = TypeMap[prop.PropertyType]; parameter.Value = pair.Value; if (!command.Parameters.Contains(parameter.ParameterName)) { command.Parameters.Add(parameter); } } var updateClause = string.Join(",", parameterizatedNames.Select(x => string.Format(" [{0}].[{1}] = {2}", tableName, x.Key, x.Value))); cmdBulder.Append(string.Format(" SET {0} WHERE {1}", updateClause.Trim(','), CommonCommandBuilder.BuildClauseByExpression(command, type, exp))); return(cmdBulder.ToString()); }
private static string CreateByType(IDbCommand command, KeyValuePair <Type, ICollection <EntityBase> > objs) { var type = objs.Key; var tableName = CommonCommandBuilder.GetTableName(type); var names = CommonCommandBuilder.FieldByValueClauseBuilder(type, objs.Value.First()).Select(x => x.Key); var insertedFieldNames = string.Join(",", names); var cmdBulder = new StringBuilder( string.Format(@" INSERT INTO [{0}].[{1}].[{2}] ({3}) VALUES ", command.Connection.Database, CommonCommandBuilder.DbSchemaName, tableName, insertedFieldNames.Trim(','))); var valuesBuilder = new StringBuilder(); foreach (var obj in objs.Value) { var nameValuePair = CommonCommandBuilder.FieldByValueClauseBuilder(type, obj); var parameterizatedNames = nameValuePair.Select(x => CommonCommandBuilder.GetParamsFormat(x.Key, x.Value, command.Connection.Database)); var insertedNames = string.Join(",", parameterizatedNames); valuesBuilder.Append(string.Format(" ({0}),", insertedNames.Trim(','))); foreach (var pair in nameValuePair) { var prop = CommonCommandBuilder.GetPropertyByAttrName(type, pair.Key); var parameter = command.CreateParameter(); parameter.ParameterName = CommonCommandBuilder.GetParamsFormat(pair.Key, pair.Value, command.Connection.Database); parameter.DbType = TypeMap[prop.PropertyType]; parameter.Value = pair.Value; if (!command.Parameters.Contains(parameter.ParameterName)) { command.Parameters.Add(parameter); } } } cmdBulder.Append(valuesBuilder.ToString().Trim(',')); return(cmdBulder.ToString()); }