首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Llblgen中使用mvc-mini-profiler数据库分析

在Llblgen中使用mvc-mini-profiler数据库分析
EN

Stack Overflow用户
提问于 2011-06-15 22:44:09
回答 2查看 652关注 0票数 1

我正在尝试将mvc-mini-profiler集成到asp.net mvc应用程序中,并使用Llblgen进行数据访问。我已经尝试覆盖了llblgen的CommonDaoBase.CreateConnection:

代码语言:javascript
复制
public override DbConnection CreateConnection(string connectionString)
{
  return MvcMiniProfiler.Data.ProfiledDbConnection.Get(base.CreateConnection(connectionString));
}

但是这导致了异常,说“不能强制转换到SqlConnection...”。有没有人让mvc-mini-profiler和llblgen一起工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-30 20:05:52

Miha Markic刚刚在他的博客中发布了答案:http://blog.rthand.com/post/2011/07/24/Integrating-MvcMiniProfiler-and-LLBLGenPro.aspx

票数 1
EN

Stack Overflow用户

发布于 2011-06-16 18:05:48

你需要LLBLGen专业版v3。V2确实使用了sqlserver的dbproviderfactory,但是生成的代码仍然有一些硬编码的类型转换到SqlClient类。我猜你用的是v2,v3不是吗?

此外,还必须对分析器的ProfiledDbProviderFactory.cs进行微小的更改:

代码语言:javascript
复制
/// <summary>
/// Extension mechanism for additional services;  
/// </summary>
/// <returns>requested service provider or null.</returns>
object IServiceProvider.GetService(Type serviceType)
{
    if(serviceType == typeof(ProfiledDbProviderFactory))
    {
        // For LLBLGen Pro v3 and up.
        return tail;
    }
    IServiceProvider tailProvider = tail as IServiceProvider;
    if (tailProvider == null) return null;
    var svc = tailProvider.GetService(serviceType);
    if (svc == null) return null;

#if ENTITY_FRAMEWORK
    if (serviceType == typeof(DbProviderServices))
    {
        svc = new ProfiledDbProviderServices((DbProviderServices)svc, profiler);
    }
#endif
    return svc;
}

编辑。我不确定这是否会起作用,因为我们的框架使用的是从ADO.NET获得的DbProviderFactory,这个工厂是真正的Sqlclient的工厂,而不是ProfiledDbProviderFactory。您可以在这里创建配置文件连接,但这是行不通的:工厂不是从连接获得的,连接是从从ADO.NET (DbProviderFactories.GetFactory())获得的工厂创建的,所有其他元素也是使用该工厂创建的。

mvc profiler必须通过封装实际工厂类型的包装器通过反射来覆盖DbProviderFactories中的数据表。这有点令人讨厌,但这是使用数据访问代码的唯一方法,数据访问代码按书上的方式工作:获取工厂,通过工厂创建元素。

令我惊讶的是,Linq to sql和Entity框架显然使用从connection对象获得的工厂:一开始是如何创建connection对象的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6359570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档