private static DbConnection CreateConnection(String connectionString, String providerInvariantName) { var wrapperConnectionString = String.Format(@"wrappedProvider={0};{1}", providerInvariantName, connectionString); var connection = new EFTracingConnection { ConnectionString = wrapperConnectionString }; return(connection); }
/// <summary> /// CreateTracingConnection with providerInvariantName /// </summary> /// <param name="connString"> /// Connection String /// </param> /// <param name="providerInvariantName"> /// provider Invariant Name /// </param> /// <returns> /// EFTracingConnection obj /// </returns> private static EFTracingConnection CreateTracingConnection(string connString, string providerInvariantName) { // based on the example at http://jkowalski.com/2010/04/23/logging-sql-statements-in-entity-frameworkcode-first/ string wrapperConnectionString = string.Format(@"wrappedProvider={0};{1}", providerInvariantName, connString); var connection = new EFTracingConnection { ConnectionString = wrapperConnectionString }; return(connection); }
private static DbConnection CreateConnection(string connectionString, string providerInvariantName) { DbConnection connection = null; if (TraceEnabled) { EFTracingProviderConfiguration.RegisterProvider(); EFTracingProviderConfiguration.LogToConsole = true; string wrapperConnectionString = String.Format(@"wrappedProvider={0};{1}", providerInvariantName, connectionString); connection = new EFTracingConnection() { ConnectionString = wrapperConnectionString }; } else { DbProviderFactory factory = DbProviderFactories.GetFactory(providerInvariantName); connection = factory.CreateConnection(); connection.ConnectionString = connectionString; } return(connection); }
//private void AppendToLog(object sender, CommandExecutionEventArgs e) //{ // if (this.logOutput != null) // { // this.logOutput.WriteLine(e.ToTraceString().TrimEnd()); // this.logOutput.WriteLine(); // } //} //public TextWriter Log //{ // get { return this.logOutput; } // set // { // if ((this.logOutput != null) != (value != null)) // { // if (value == null) // { // CommandExecuting -= AppendToLog; // } // else // { // CommandExecuting += AppendToLog; // } // } // this.logOutput = value; // } //} #endregion /// <summary> /// Create warpped connection. /// </summary> /// <param name="nameOrConnectionString">The connection string name in the config file or actual value.</param> /// <param name="enableTracing">Enable entities tracing.</param> /// <param name="enableCaching">Enable entities caching.</param> /// <returns>The wrapped connection.</returns> protected static DbConnection CreateWrappedConnection(string nameOrConnectionString, bool enableTracing, bool enableCaching) { //------------------------------------------------------- // Init //------------------------------------------------------- /* Setup variables */ DbConnection connection = null; string providerInvariantName = "System.Data.SqlClient"; string connectionString = nameOrConnectionString; if (enableTracing && !initializedTracingWrapper) { EFTracingProviderConfiguration.RegisterProvider(); #if DEBUG EFTracingProviderConfiguration.LogToConsole = true; #endif initializedTracingWrapper = true; } if (enableCaching && !initializedCachingWrapper) { EFCachingProviderConfiguration.RegisterProvider(); initializedCachingWrapper = true; } //------------------------------------------------------- // Do we got a "name={DbConnectionNameInConfigFile} format? //------------------------------------------------------- int index = nameOrConnectionString.IndexOf('='); if (index > -1 && nameOrConnectionString.Substring(0, index).Trim().Equals("name", StringComparison.OrdinalIgnoreCase)) { /* Get the actual connection name */ nameOrConnectionString = nameOrConnectionString.Substring(index + 1).Trim(); } //------------------------------------------------------- // Parse the connection string and provider invariant name //------------------------------------------------------- var connectionStringSetting = ConfigurationManager.ConnectionStrings[nameOrConnectionString]; if (connectionStringSetting != null) { providerInvariantName = connectionStringSetting.ProviderName; connectionString = connectionStringSetting.ConnectionString; } //------------------------------------------------------- // Construct the basic underlaying connection //------------------------------------------------------- DbProviderFactory factory = DbProviderFactories.GetFactory(providerInvariantName); connection = factory.CreateConnection(); try { connection.ConnectionString = connectionString; } catch { } //------------------------------------------------------- // Should we use tracking //------------------------------------------------------- if (enableTracing) { connection = new EFTracingConnection(connection, "System.Data.SqlClient"); } //------------------------------------------------------- // Should we use caching // NOTE: Caching test and wrapping MUST COME AFTER Tracing OTHERWISE IT'LL WON'T WORK! //------------------------------------------------------- if (enableCaching) { if (enableTracing) { connection = new EFCachingConnection(connection, "EFTracingProvider"); } else { connection = new EFCachingConnection(connection, "System.Data.SqlClient"); } } return(connection); }