Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        public void Build_update_statment_with_several_where()
        {
            string verify  = "UPDATE [faketable] SET [col1] = $col1, [col2] = $col2, [col3] = $col3 WHERE [col1] = $qPm0 AND [col2] >= $qPm1 OR [col3] = [col1]";
            var    columns = new List <string>()
            {
                "col1", "col2", "col3"
            };
            var parameters = new List <QueryParam>
            {
                new QueryParam("col1", null),
                new QueryParam("col2", null),
                new QueryParam("col3", null)
            };
            var builder = new UpdateSqlBuilder("faketable", session, columns, parameters);

            builder.Where("col1").EqualToValue(1)
            .And("col2").GreaterOrEqualToValue(10)
            .Or("col3").EqualTo("col1");

            var sqlBody = builder.Build();
            var res     = sqlBody.ToString(session.SessionFactory.DbSettings.SqlDialect);

            Console.WriteLine(res);
            Assert.AreEqual(verify, res);
        }
Ejemplo n.º 4
0
        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);
        }