public ParameterizedSql GetSqlForSave <T>(T entity, EntityMapping <T> mapping) { if (mapping.IsPrimaryKeyDefaultValue(entity) == false) { throw new InvalidOperationException($"Entity of type {entity.GetType()} and id {mapping.GetPrimaryKeyValue(entity)} is already saved. Please use SaveOrUpdate or Update."); } var parameters = this.GetParametersForMapping(entity, mapping).ToList(); var builder = new StringBuilder() .Append("INSERT INTO ") .Append(mapping.TableName) .Append(" (") .AppendJoin(", ", parameters.Select(f => f.ColumnName)) .Append(") VALUES ( ") .AppendJoin(", ", parameters.Select(f => f.ParameterName)) .Append(");"); return(new ParameterizedSql { Sql = builder.ToString(), Parameters = parameters }); }
public ParameterizedSql GetSqlForUpdate <T>(T entity, EntityMapping <T> mapping) { if (mapping.IsPrimaryKeyDefaultValue(entity)) { throw new InvalidOperationException($"Entity of type {entity.GetType()} is not yet saved and cannot be updated. Please use SaveOrUpdate or Save."); } var parameters = this.GetParametersForMapping(entity, mapping).ToList(); var builder = new StringBuilder() .Append("UPDATE ") .Append(mapping.TableName) .Append(" SET ") .AppendJoin(", ", parameters.Select(f => $"{f.ColumnName} = {f.ParameterName}").ToList()) .Append(" WHERE ") .Append($" {mapping.PrimaryKeyPropertyMapping.ColumnName} = {mapping.GetPrimaryKeyValue(entity)}"); return(new ParameterizedSql { Sql = builder.ToString(), Parameters = parameters }); }