我们正在使用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实现此目的?
另外,您是否需要使用此方法在连接字符串中显式添加提供程序?
答案 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用于使用的连接字符串,而不是我在这里使用的香草。