File: System\Data\Common\EntitySql\ParserOptions.cs
Project: ndp\fx\src\DataEntity\System.Data.Entity.csproj (System.Data.Entity)
//---------------------------------------------------------------------
// <copyright file="ParserOptions.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// @owner  Microsoft
// @backupOwner Microsoft
//---------------------------------------------------------------------
 
namespace System.Data.Common.EntitySql
{
    using System;
    using System.Globalization;
  
    /// <summary>
    /// Represents eSQL compilation options.
    /// </summary>
    internal sealed class ParserOptions
    {
        internal enum CompilationMode
        {
            /// <summary>
            /// Normal mode. Compiles eSQL command without restrictions.
            /// Name resolution is case-insensitive (eSQL default).
            /// </summary>
            NormalMode,
 
            /// <summary>
            /// View generation mode: optimizes compilation process to ignore uncessary eSQL constructs:
            ///     - GROUP BY, HAVING and ORDER BY clauses are ignored.
            ///     - WITH RELATIONSHIP clause is allowed in type constructors.
            ///     - Name resolution is case-sensitive.
            /// </summary>
            RestrictedViewGenerationMode,
 
            /// <summary>
            /// Same as CompilationMode.Normal plus WITH RELATIONSHIP clause is allowed in type constructors.
            /// </summary>
            UserViewGenerationMode
        }
 
        /// <summary>
        /// Sets/Gets eSQL parser compilation mode.
        /// </summary>
        internal CompilationMode ParserCompilationMode;
 
        internal StringComparer NameComparer
        {
            get
            {
                return this.NameComparisonCaseInsensitive ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal;
            }
        }
 
        internal bool NameComparisonCaseInsensitive
        {
            get
            {
                return this.ParserCompilationMode == CompilationMode.RestrictedViewGenerationMode ? false : true;
            }
        }
    }
}