Пример #1
0
        public void Update(IDGBase vl, IDBExecutor exec)
        {
            SchemaTable t = Schema.EnsureSchema(vl.GetType());

            if (t != null)
            {
                SQUpdateQuery upd = new SQUpdateQuery()
                {
                    UpdateTable = new SQAliasableObject(t.Table.Name),
                    Condition   = new SQCondition(t.Table.GetPrimaryKey().Name, SQRelationOperators.Equal, vl.ID.ToString())
                };
                PopulateSetQuery(upd, vl, t);
                upd.Execute(exec);
            }
        }
Пример #2
0
        public virtual string Write(SQUpdateQuery q)
        {
            StringBuilder sb = new StringBuilder();

            string fromClause = "";

            if (q.Join != null)
            {
                fromClause = string.Format("\r\nFROM {0} {1}",
                                           GetSafeObjectName(q.UpdateTable.Actual.Write(this)) + (string.IsNullOrEmpty(q.UpdateTable.Alias) ? "" : " AS " + q.UpdateTable.Alias),
                                           Write(q.Join));
            }

            // use the alias if there should be a from clause and the
            // table's alias is set
            string updateObject = !string.IsNullOrEmpty(fromClause) && !string.IsNullOrEmpty(q.UpdateTable.Alias) ? q.UpdateTable.Alias : GetSafeObjectName(q.UpdateTable.Actual.Write(this));

            sb.AppendLine(string.Format("UPDATE {0} SET", updateObject));
            for (int i = 0; i < q.SetPairs.Count; i++)
            {
                SQSetQueryPair pair = q.SetPairs[i];
                sb.AppendLine((i == 0 ? "\t" : "\t,") + string.Format("{0} = {1}", GetSafeObjectName(pair.Left), pair.Right));
            }

            if (!string.IsNullOrEmpty(fromClause))
            {
                sb.AppendLine(fromClause);
            }

            if (q.Condition != null)
            {
                sb.AppendLine("WHERE " + Write(q.Condition));
            }

            return(sb.ToString());
        }
Пример #3
0
 public virtual void Update(SQUpdateQuery query)
 {
     ExecuteQuery(Write(query), query.Parameters);
 }