public static SqlQuery EnsureAllForeignJoins(this SqlQuery query, Row row)
 {
     foreach (var field in row.GetFields())
     {
         if ((field.Flags & FieldFlags.Foreign) == FieldFlags.Foreign)
         {
             query.EnsureJoinOf(field);
         }
     }
     return(query);
 }
        /// <summary>
        /// Adds a field's expression to the SELECT statement with its own column name.
        /// If a join alias is referenced in the field expression, and the join is defined in
        /// field's entity class, it is automatically included in the query.
        /// The field is marked as a target at current index for future loading from a data reader.
        /// </summary>
        /// <param name="field">Field object</param>
        /// <returns>The query itself.</returns>
        public static SqlQuery Select(this SqlQuery query, IField field)
        {
            if (field == null)
            {
                throw new ArgumentNullException("field");
            }

            query.EnsureJoinOf(field);
            new SqlQuery.Column(query, field.Expression, field.Name, field);
            return(query);
        }