本文有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: }