使用 MvcMiniProfiler 监控EF 4.1 with MySQL Provider
本文有2个不怎么相关的话题,一是用MVCMiniProfiler 监控EF4.1,另一个则是为MvcMiniProfiler提供MySQL Provider的支持。
需要在Web.config中添加system.data的节点
1: <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
2: <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider"
3: description="MvcMiniProfiler.Data.ProfiledDbProvider"
4: type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
另外在Application_Start设置Database.DefaultConnectionFactory即可
1: var factory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
2: var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
3: Database.DefaultConnectionFactory = profiled;
当然,使用MySQL的话需要使用MySQL的ConnectionFactory,但是MySQL没有为我们提供,所以我们就自己写一下
1: class MySqlConnectionFactory : IDbConnectionFactory
2: {
3: public DbConnection CreateConnection(string nameOrConnectionString)
4: {
5: using (MiniProfiler.Current.Step("创建Connection:" + nameOrConnectionString))
6: {
7: var connStr = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
8: return new MySqlConnection(connStr.ConnectionString);
9: }
10: }
11: }
然后使用MySqlConnectionFactory来注册
1: var factory = new MySqlConnectionFactory();
2: var profiled = new ProfiledDbConnectionFactory(factory);
3: Database.DefaultConnectionFactory = profiled;
但是有很多时候使用EF4.1这样做并不会生效我们可能还要为DbContext包装一个基类来实现如下功能
1: abstract public class BaseDbContext :DbContext
2: {
3: protected BaseDbContext(string nameOrConnectionString)
4: : base(GetConnection(nameOrConnectionString),true)
5: {
6:
7: }
8:
9: private static DbConnection GetConnection(string nameOrConnectionString)
10: {
11: if( Database.DefaultConnectionFactory is SqlConnectionFactory)
12: {//这个判断是为了解决未使用MySqlConnectionFactory时自动使用SQLServer的问题
13: var connStr = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
14: return new MySqlConnection(connStr.ConnectionString);
15: }
16: return Database.DefaultConnectionFactory.CreateConnection(nameOrConnectionString);
17: }
18: }
标签:
EF
, MVCMiniProfiler
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2008-08-01 XNA游戏开发
2008-08-01 XNA 做一个水果机的游戏
2007-08-01 HTML中利用纯Microsoft Ajax Library做出可调用WebSerives的AutoComplete
2007-08-01 Asp.net中动态在中加入Scrpit标签