本文有2个不怎么相关的话题,一是用MVCMiniProfiler 监控EF4.1,另一个则是为MvcMiniProfiler提供MySQL Provider的支持。

需要在Web.config中添加system.data的节点

/>
/>

另外在Application_Start设置Database.DefaultConnectionFactory即可

); 
new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
   3: Database.DefaultConnectionFactory = profiled;

当然,使用MySQL的话需要使用MySQL的ConnectionFactory,但是MySQL没有为我们提供,所以我们就自己写一下

class MySqlConnectionFactory : IDbConnectionFactory
   2:         {
string nameOrConnectionString)
   4:             {
 + nameOrConnectionString))
   6:                 {
   7:                     var connStr = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
new MySqlConnection(connStr.ConnectionString);
   9:                 }
  10:             }
  11:         }

然后使用MySqlConnectionFactory来注册

new MySqlConnectionFactory();
new ProfiledDbConnectionFactory(factory);
   3: Database.DefaultConnectionFactory = profiled;

但是有很多时候使用EF4.1这样做并不会生效我们可能还要为DbContext包装一个基类来实现如下功能

class BaseDbContext :DbContext
   2:    {
string nameOrConnectionString)
true)
   5:        {
   6:           
   7:        }
   8:  
string nameOrConnectionString)
  10:        {
is SqlConnectionFactory)
//这个判断是为了解决未使用MySqlConnectionFactory时自动使用SQLServer的问题
  13:                var connStr = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
new MySqlConnection(connStr.ConnectionString);
  15:            }
return Database.DefaultConnectionFactory.CreateConnection(nameOrConnectionString);
  17:        }
  18: }

相关文章: