Using mvc-mini-profiler with EF 4.0 and Ninject

前端 未结 3 807
有刺的猬
有刺的猬 2021-02-05 23:22

I\'m trying to use the new mvc-mini-profiler with my EF4 based app, but I have no idea how to properly get a connection to my destination datasource.

Here\'s as far as I

3条回答
  •  有刺的猬
    2021-02-05 23:41

    Slightly less hacky way:

    private static SqlConnection GetConnection()
    {
        var connStr = ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString;
        var entityConnStr = new EntityConnectionStringBuilder(connStr);
        return new SqlConnection(entityConnStr.ProviderConnectionString);
    }
    


    Amendment by John Gietzen:

    This combination of all of the answers should work for ANY backing store that Entity Framework supports.

    public static DbConnection GetStoreConnection() where T : System.Data.Objects.ObjectContext
    {
        return GetStoreConnection("name=" + typeof(T).Name);
    }
    
    public static DbConnection GetStoreConnection(string entityConnectionString)
    {
        // Build the initial connection string.
        var builder = new EntityConnectionStringBuilder(entityConnectionString);
    
        // If the initial connection string refers to an entry in the configuration, load that as the builder.
        object configName;
        if (builder.TryGetValue("name", out configName))
        {
            var configEntry = WebConfigurationManager.ConnectionStrings[configName.ToString()];
            builder = new EntityConnectionStringBuilder(configEntry.ConnectionString);
        }
    
        // Find the proper factory for the underlying connection.
        var factory = DbProviderFactories.GetFactory(builder.Provider);
    
        // Build the new connection.
        DbConnection tempConnection = null;
        try
        {
            tempConnection = factory.CreateConnection();
            tempConnection.ConnectionString = builder.ProviderConnectionString;
    
            var connection = tempConnection;
            tempConnection = null;
            return connection;
        }
        finally
        {
            // If creating of the connection failed, dispose the connection.
            if (tempConnection != null)
            {
                tempConnection.Dispose();
            }
        }
    }
    

提交回复
热议问题