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);
        }
Exemple #2
0
        /// <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);
    }
Exemple #4
0
        //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);
        }