/// <summary> /// Creates an SqlQuery to perform an update based upon the values in the object delta. /// </summary> /// <param name="objectDelta">The object delta to create the query for.</param> /// <returns> /// The created <see cref="SqlQuery" />. /// </returns> public SqlQuery BuildUpdateSqlQuery(ObjectDelta objectDelta) { if (objectDelta == null) { throw new ArgumentNullException("objectDelta"); } if (log.IsDebug) { log.Debug(LogMessages.SqlDialect_CreatingSqlQuery, "UPDATE"); } var objectInfo = ObjectInfo.For(objectDelta.ForType); var builder = new UpdateSqlBuilder(this.SqlCharacters) .Table(objectInfo); foreach (var change in objectDelta.Changes) { builder.SetColumnValue(change.Key, change.Value); } var sqlQuery = builder .Where(objectInfo.TableInfo.IdentifierColumn.ColumnName).IsEqualTo(objectDelta.Identifier) .ToSqlQuery(); return sqlQuery; }
/// <summary> /// Builds the command text to update a database record for the specified <see cref="IObjectInfo"/>. /// </summary> /// <param name="objectInfo">The object information.</param> /// <returns> /// The created command text. /// </returns> protected virtual string BuildUpdateCommandText(IObjectInfo objectInfo) { if (objectInfo == null) { throw new ArgumentNullException("objectInfo"); } var builder = new UpdateSqlBuilder(this.SqlCharacters) .Table(objectInfo); for (int i = 0; i < objectInfo.TableInfo.Columns.Count; i++) { var columnInfo = objectInfo.TableInfo.Columns[i]; if (columnInfo.AllowUpdate) { builder.SetColumnValue(columnInfo.ColumnName, null); } } var updateSqlQuery = builder .Where(objectInfo.TableInfo.IdentifierColumn.ColumnName).IsEqualTo(0) .ToSqlQuery(); return updateSqlQuery.CommandText; }
public void WhereThrowsArgumentExceptionForNullColumn() { var sqlBuilder = new UpdateSqlBuilder(SqlCharacters.Empty); var exception = Assert.Throws<ArgumentException>( () => sqlBuilder.Where(null)); Assert.Equal(ExceptionMessages.ArgumentNullOrEmpty.FormatWith("column"), exception.Message); }