예제 #1
0
        /// <summary>
        /// Creates query context instance.
        /// </summary>
        internal QueryContext(string connectionContextName)
        {
            // Get entity works context.
            var entityWorksContext = EntityWorksContext.GetEntityWorksContext();

            // Get connection context.
            this.ConnectionContext = EntityWorksContext.ConnectionContexts[connectionContextName];

            // Set db provider factory.
            this.DbProviderFactory = this.ConnectionContext.GetSpecificDbProvider();

            // Set db string builder.
            this.DbConnectionStringBuilder = DbProviderFactory.CreateConnectionStringBuilder();

            // Parse connection string to builder.
            this.DbConnectionStringBuilder.ConnectionString = ConnectionContext.ConnectionString;

            // Set connection segments.
            Name     = connectionContextName;
            Database = DbConnectionStringBuilder["Initial Catalog"] as string;
            Username = DbConnectionStringBuilder["User ID"] as string;
            Password = DbConnectionStringBuilder["Password"] as string;
            Hostname = DbConnectionStringBuilder["Data Source"] as string;

            // Set connection string.
            ConnectionString = DbConnectionStringBuilder.ConnectionString;

            // Set default language code.
            LanguageCode = entityWorksContext.LanguageCode;
        }
        /// <summary>
        /// Validates if all parameters are set.
        /// </summary>
        public static void ValidateInstance(EntityWorksContext instance)
        {
            // Validate if debug mode on.
            if (instance.DebugMode)
            {
                // Validate language code.
                if (string.IsNullOrWhiteSpace(instance.LanguageCode))
                {
                    throw new EntityWorksException("Language code can not be null. Make sure to provide default localization culture code.");
                }

                // Validate if default query context is set.
                else if (instance.DefaultQueryContext == null)
                {
                    throw new EntityWorksException("Default query context not initialized. Make sure to provide valid connection string and register default query context.");
                }

                // Validate if user query context is set.
                else if (instance.UserQueryContext == null)
                {
                    throw new EntityWorksException("User query context not initialized. Make sure to provide valid connection string and register user query context.");
                }

                // Validate if root query context is set.
                else if (instance.UserQueryContext == null)
                {
                    throw new EntityWorksException("Root query context not initialized. Make sure to provide valid connection string and register root query context.");
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Sets context as ambient context.
        /// </summary>
        private void SetAmbiance()
        {
            // Get entity works context.
            var entityWorksContext = EntityWorksContext.GetEntityWorksContext();

            // Enlist.
            entityWorksContext.EnlistAmbientContext(this);
        }
예제 #4
0
        public static EntityWorksContext GetEntityWorksContext()
        {
            // Instance reference.
            EntityWorksContext instance = null;

            // Get instance.
            if (m_contextFactory != null)
            {
                instance = m_contextFactory();
            }
            else
            {
                instance = m_entityWorksContext;
            }

            // Return instance.
            return(instance);
        }
예제 #5
0
        /// <summary>
        /// Gets ambient query context.
        /// </summary>
        internal static QueryContext GetAmbientQueryContext()
        {
            // Get entity works context.
            var entityWorksContext = EntityWorksContext.GetEntityWorksContext();

            // Validate instance if debug mode.
            EntityWorksContext.ValidateInstance(entityWorksContext);

            // Get ambient query context.
            var queryContext = entityWorksContext.PeekAmbientContext();

            // Set language code.
            if (queryContext.LanguageCode == null)
            {
                queryContext.LanguageCode = entityWorksContext.LanguageCode;
            }

            // Return query context.
            return(queryContext);
        }
예제 #6
0
        /// <summary>
        /// Protected implementation of Dispose pattern.
        /// </summary>
        protected virtual void Dispose(bool disposing)
        {
            // If disposed return.
            if (m_isDisposed)
            {
                return;
            }

            // If disposing release managed objects.
            if (disposing)
            {
                // Get entity works context.
                var entityWorksContext = EntityWorksContext.GetEntityWorksContext();

                // Delist ambient context.
                entityWorksContext.DelistAmbientContext(this);
            }

            // Set disposed indicator true.
            m_isDisposed = true;
        }
예제 #7
0
 /// <summary>
 /// Default static constructor.
 /// </summary>
 static EntityWorksContextProvider()
 {
     // Set defaults.
     m_entityWorksContext = new EntityWorksContext();
     m_contextFactory     = null;
 }