public string AsSqlString() { var toInsert = InsertAbleAttributes.Select(attr => attr.DataBaseColumn) .Aggregate("", (acc, next) => acc == "" ? next : acc + ", " + next); var insertPositions = InsertAbleAttributes.Aggregate("", (acc, next) => acc == "" ? $"@{next.DataBaseColumn}?" : acc + ", " + $"@{next.DataBaseColumn}?"); var insertPlaceHolder = InsertedObjects.Select((s, i) => (i, s)).Aggregate("", (acc, next) => acc == "" ? $"({insertPositions.Replace("?", ""+next.i)})" : acc + $", ({insertPositions.Replace("?", ""+next.i)})"); var returnValues = ReturnAttributes .Select(attr => attr.DataBaseColumn) .Aggregate("", (acc, next) => acc == "" ? next : acc + ", " + next); return($"INSERT INTO {Entity.TableName} ({toInsert}) " + $"VALUES {insertPlaceHolder} " + $"RETURNING {returnValues}"); }
public string AsSqlString() { var toInsert = InsertAbleAttributes.Select(attr => attr.DataBaseColumn) .Aggregate("", (acc, next) => acc == "" ? next : acc + ", " + next); var insertPositions = InsertAbleAttributes.Aggregate("", (acc, next) => acc == "" ? $"@{next.DataBaseColumn}?" : acc + ", " + $"@{next.DataBaseColumn}?"); var insertPlaceHolder = _toInsert.Select((s, i) => (i, s)).Aggregate("", (acc, next) => acc == "" ? $"({insertPositions.Replace("?", ""+next.i)})" : acc + $", ({insertPositions.Replace("?", ""+next.i)})"); var autoIncReturn = AutoIncAttributes .Select(attr => attr.DataBaseColumn) .Aggregate("", (acc, next) => acc == "" ? next : acc + ", " + next); return($"INSERT INTO {Entity.TableName} ({toInsert}) " + $"VALUES {insertPlaceHolder} " + (string.IsNullOrWhiteSpace(autoIncReturn) ? "" : $"Returning {autoIncReturn}")); }