示例#1
0
        /// <summary>
        /// Creates a clone of the query.
        /// </summary>
        /// <returns>A cloned query.</returns>
        /// <remarks>
        /// Clones states like TrackAssignments, AssignedFields etc,
        /// creates a copy of Params dictionary
        /// </remarks>
        public SqlQuery Clone()
        {
            var clone = new SqlQuery();

            clone.dialect = dialect;
            clone.dialectOverridden = dialectOverridden;
            clone.skip = skip;
            clone.take = take;
            clone.countRecords = countRecords;

            clone.into = new List<object>(into);
            clone.intoIndex = intoIndex;

            Column s;
            for (var i = 0; i < columns.Count; i++)
            {
                s = columns[i];
                var si = new Column(s.Expression, s.ColumnName, s.IntoRowIndex, s.IntoField);
                clone.columns.Add(si);
            }

            clone.from = new StringBuilder(from.ToString());
            if (where != null)
                clone.where = new StringBuilder(where.ToString());

            if (orderBy != null)
            {
                clone.orderBy = new List<string>();
                clone.orderBy.AddRange(orderBy);
            }

            if (groupBy != null)
                clone.groupBy = new StringBuilder(groupBy.ToString());

            if (having != null)
                clone.having = new StringBuilder(having.ToString());

            if (parent != null)
                clone.parent = this.parent;
            else if (this.Params != null)
                foreach (var pair in this.Params)
                    clone.AddParam(pair.Key, pair.Value);

            return clone;
        }
示例#2
0
 public Column(SqlQuery query, string expression, string columnName, object intoField)
     : this(expression, columnName, query.intoIndex, intoField)
 {
     query.columns.Add(this);
 }
示例#3
0
 /// <summary>
 ///   <see cref="SqlQuery"/> nesnesinin içerdiği sorguyu bağlantı üzerinde çalıştırır.</summary>
 /// <remarks>
 ///   <p>Eğer <see cref="SqlQuery.CacheTimeOut(int)"/> ile sorgu için saniye cinsinden bir önbellekleme 
 ///   süresi belirlenmişse bu değer kullanılır.</p></remarks>       
 /// <param name="connection">
 ///   Sorgunun çalıştırılacağı bağlantı. Gerekirse otomatik olarak açılır.</param>
 /// <param name="query">
 ///   Sorguyu içeren <see cref="SqlQuery"/> nesnesi.</param>
 /// <returns>
 ///   Sorgu sonuçlarına erişim sağlayan <see cref="IDataReader"/> nesnesi.</returns>
 public static IDataReader ExecuteReader(IDbConnection connection, SqlQuery query, Dictionary param)
 {
     return ExecuteReader(connection, query.ToString(), param);
 }
示例#4
0
        /// <summary>
        ///   Bağlantı üzerinde tek değer döndüren bir <see cref="SqlQuery"/> sorgusunu çalıştırır.</summary>
        /// <param name="connection">
        ///   Sorgunun çalıştırılacağı bağlantı.</param>
        /// <param name="selectQuery">
        ///   Çalıştırılacak sorguyu içeren <see cref="SqlQuery"/> nesnesi.</param>
        /// <returns>
        ///   Sorgunun döndürdüğü skalar değer.</returns>
        public static object ExecuteScalar(IDbConnection connection, SqlQuery selectQuery, Dictionary param)
        {
            if (selectQuery == null)
                throw new ArgumentNullException("selectQuery");

            return ExecuteScalar(connection, selectQuery.ToString(), param);
        }
示例#5
0
 /// <summary>
 ///   <see cref="SqlQuery"/> nesnesinin içerdiği sorguyu bağlantı üzerinde çalıştırır.</summary>
 /// <remarks>
 ///   <p>Eğer <see cref="SqlQuery.CacheTimeOut(int)"/> ile sorgu için saniye cinsinden bir önbellekleme 
 ///   süresi belirlenmişse bu değer kullanılır.</p></remarks>       
 /// <param name="connection">
 ///   Sorgunun çalıştırılacağı bağlantı. Gerekirse otomatik olarak açılır.</param>
 /// <param name="query">
 ///   Sorguyu içeren <see cref="SqlQuery"/> nesnesi.</param>
 /// <returns>
 ///   Sorgu sonuçlarına erişim sağlayan <see cref="IDataReader"/> nesnesi.</returns>
 public static IDataReader ExecuteReader(IDbConnection connection, SqlQuery query)
 {
     return ExecuteReader(connection, query.ToString(), query.Params);
 }