Exemple #1
0
        public void Update(Entity item, string whereClause = null, params object[] args)
        {
            //build where/set clause from metadata
            if (whereClause == null)
            {
                var dic = item.GetWhereClauseOnPrimaryKeyDbStyle();
                args        = dic.Values.ToArray();
                whereClause = new SqlTokens(dic).AsWhereClause();
            }

            var nonPrimaryKeysColumns = item.GetDictionaryInDbStyle(false);

            if (nonPrimaryKeysColumns.Count == 0)
            {
                return;
            }

            var setClauseTokens = new SqlTokens(nonPrimaryKeysColumns);

            var sql = "update " + item.TableName
                      + " " + setClauseTokens.AsSetClause(args.Length)
                      + " " + whereClause;

            using (var connection = CreateOrReuseConnection())
            {
                using (var command = CreateCommand(sql, connection.GetAdoConnection()))
                {
                    AddParameters(command, args);
                    AddParameters(command, item.GetDictionaryInDbStyle(false), args.Length);
                    command.ExecuteNonQuery();
                }
            }
        }