Azavea.Open.DAO.SQL.SqlDaLayer.Update C# (CSharp) Method

Update() public method

public Update ( ITransaction transaction, ClassMapping mapping, DaoCriteria crit, object>.IDictionary propValues ) : int
transaction ITransaction
mapping ClassMapping
crit Azavea.Open.DAO.Criteria.DaoCriteria
propValues object>.IDictionary
return int
        public override int Update(ITransaction transaction, ClassMapping mapping, DaoCriteria crit, IDictionary<string, object> propValues)
        {
            // This must be run BEFORE PreProcessPropertyValues, since PreProcessPropertyValues can mutate the collection
            var valueStrings = GetValueStrings(mapping.Table, propValues);
            PreProcessPropertyValues(mapping.Table, propValues);

            SqlDaQuery query = _sqlQueryCache.Get();
            try
            {
                // Make the "update table set blah = something" part.
                query.Sql.Append("UPDATE ");
                query.Sql.Append(mapping.Table);
                query.Sql.Append(" SET ");
                bool first = true;
                foreach (string key in propValues.Keys)
                {
                    if (!first)
                    {
                        query.Sql.Append(", ");
                    }
                    else
                    {
                        first = false;
                    }
                    query.Sql.Append(key);
                    if (valueStrings != null && valueStrings.ContainsKey(key))
                    {
                        query.Sql.Append(" = " + valueStrings[key]);
                    }
                    else
                    {
                        query.Sql.Append(" = ?");
                    }

                    query.Params.Add(propValues[key]);
                }
                // Add the "where blah, blah, blah" part.
                ExpressionsToQuery(query, crit, mapping);

                return SqlConnectionUtilities.XSafeCommand(_connDesc, (SqlTransaction)transaction, query.Sql.ToString(), query.Params);
            }
            finally
            {
                _sqlQueryCache.Return(query);
            }
        }