/// <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."); } } }
/// <summary> /// Sets context as ambient context. /// </summary> private void SetAmbiance() { // Get entity works context. var entityWorksContext = EntityWorksContext.GetEntityWorksContext(); // Enlist. entityWorksContext.EnlistAmbientContext(this); }
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); }
/// <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); }
/// <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; }
/// <summary> /// Default static constructor. /// </summary> static EntityWorksContextProvider() { // Set defaults. m_entityWorksContext = new EntityWorksContext(); m_contextFactory = null; }