在没有显式使用GlimpseDbConnection的情况下分析Linq.DataContext

时间:2013-11-08 13:42:59

标签: c# linq-to-sql glimpse

我们正在使用LinqToSQL和Glimpse,连接设置如下:

if (ApplicationSettings.ProfileDatabaseQueries)
{
    var connection = new SqlConnection(connectionString);
    var conn = new GlimpseDbConnection(connection);
    context = new ApplicationDatabaseDataContext(conn, mappingSource);
}
else
{
    context = new ApplicationDatabaseDataContext(connectionString, mappingSource);
}

我在这个Stack Overflow post中读到,如果你使用DbProviderFactories,那么Glimpse会自动挂钩,而不是我们必须在使用web.config键切换之前。

有没有人有任何示例代码显示如何使用System.Data.Linq.DataContext实现此目的?

另外,您是否需要使用此方法在连接字符串中显式添加提供程序?

1 个答案:

答案 0 :(得分:2)

要使用DbProviderFactories基础设施而不是手动处理上述内容,它将如下所示:

代码:

var connectionString = ConfigurationManager.ConnectionStrings["MusicStoreEntities"];
var factory = DbProviderFactories.GetFactory(connectionString.ProviderName); 
context = new ApplicationDatabaseDataContext(factory.CreateConnection(), mappingSource);

的Web.config:

<configuration>
    <!-- Other stuff -->
    <connectionStrings>
        <add name="MusicStoreEntities" connectionString="Data Source=|DataDirectory|MvcMusicStore.sdf" providerName="System.Data.SqlServerCe.4.0" />
    </connectionStrings>
    <!-- Other stuff -->
</configuration>

执行上述操作后,您无需再进行if (ApplicationSettings.ProfileDatabaseQueries)检查。您可以在web.config中打开和关闭Glimpse,而不必更改任何其他代码。

注意,您将需要使用L2S用于使用的连接字符串,而不是我在这里使用的香草。