public ActionParams Upsert(IClassMapper classMap, object entity) { var columns = classMap.GetNotIgnoredColumns(); var guids = new IPropertyMap[0]; if (Configuration.AutoPopulateKeyGuidValue) { guids = columns.Where(x => x.PropertyInfo.PropertyType == typeof(Guid)).ToArray(); foreach (var guid in guids) { if ((Guid)guid.Getter(entity) != Guid.Empty) { continue; } var value = Configuration.GuidCreator.GetGuid(); guid.Setter(entity, value); } } var sql = Configuration.Dialect.GetUpsertSql(classMap); var dynamicParameters = new DynamicParameters(); foreach (var column in columns) { dynamicParameters.Add(column.Name, column.Getter(entity)); } return(ActionParams.New(sql, dynamicParameters)); }
private string GetInsertSection(IClassMapper classMap) { var columns = classMap.GetNotIgnoredColumns(); var columnNames = columns.Select(p => GetColumnName(classMap, p, false)); var parameters = columns.Select(p => Configuration.Dialect.ParameterPrefix + p.Name); return($"({string.Join(", ", columnNames)}) VALUES ({string.Join(", ", parameters)})"); }
private string GetInsertSection(IClassMapper classMap) { var columns = classMap.GetNotIgnoredColumns(); var columnNames = columns.Select(p => GetColumnName(p.ColumnName, null)); var parameters = columns.Select(p => ParameterPrefix + p.Name); return($"({string.Join(", ", columnNames)}) VALUES ({string.Join(", ", parameters)})"); }
public string Insert(IClassMapper classMap) { return(_insertCache.GetOrAdd(classMap.EntityType.TypeHandle, x => { var columns = classMap.GetNotIgnoredColumns(); if (!columns.Any()) { throw new ArgumentException("No columns were mapped."); } var columnNames = columns.Select(p => GetColumnName(classMap, p, false)); var parameters = columns.Select(p => Configuration.Dialect.ParameterPrefix + p.Name); var sql = new StringBuilder( $"INSERT INTO {GetTableName(classMap)} ({columnNames.AppendStrings()}) VALUES ({parameters.AppendStrings()})"); return sql.ToString(); })); }
public ActionParams Insert(IClassMapper classMap, object entity) { var columns = classMap.GetNotIgnoredColumns(); var guids = new IPropertyMap[0]; if (Configuration.AutoPopulateKeyGuidValue) { guids = columns.Where(x => x.PropertyInfo.PropertyType == typeof(Guid)).ToArray(); foreach (var guid in guids) { if ((Guid)guid.Getter(entity) != Guid.Empty) { continue; } var value = Configuration.GuidCreator.GetGuid(); guid.Setter(entity, value); } } var sql = SqlGenerator.Insert(classMap); var dynamicParameters = new DynamicParameters(); foreach (var column in columns) { dynamicParameters.Add(column.Name, column.Getter(entity)); } if (classMap.HasAutoGeneratedId() && SqlGenerator.SupportsMultipleStatements()) { sql += Configuration.Dialect.BatchSeparator + SqlGenerator.IdentitySql(classMap); } return(ActionParams.New(sql, dynamicParameters)); }