【问题标题】:mvc-mini-profiler configuration clarificationmvc-mini-profiler 配置说明
【发布时间】:2011-07-22 04:46:49
【问题描述】:

探查器已安装在我的 MVC 3 应用程序中并且可以正常工作,但我遇到的困难是正确设置 EF 4 db 部分的正确方法。

来自分析器的主页

使用工厂返回您的连接:

public static DbConnection GetOpenConnection()
{
    var cnn = CreateRealConnection(); 

    // wrap the connection with a profiling connection that tracks timings 
    return MvcMiniProfiler.Data.ProfiledDbConnection.Get(cnn, MiniProfiler.Current);
}

实体框架

public static MyModel Get()
{
    var conn = ProfiledDbConnection.Get(GetConnection());
    return ObjectContextUtils.CreateObjectContext<MyModel>(conn);
}

好的,所以我想澄清一下对 MyModel Get 方法的 GetConnection() 的调用是否应该是 GetOpenConnection()?

如果是错字,那么 CreateRealConnection 会是什么样子?我通过提供者模型使用 ODP.NET,并且我的模型库没有对 Oracle.DataAccess.Client 的引用,如果可以的话,我更愿意保持这种方式。

另外,所有这些代码将驻留在我的存储库中的什么位置?

public IQueryable<PRODUCTHEADER> Products
{
    get{ return ctx.PRODUCTHEADERs.AsQueryable(); }
}

谢谢你, 斯蒂芬

【问题讨论】:

  • 你能链接到迷你分析器吗?
  • 您使用的是哪个版本的 EntityFramework? 4.0 还是 4.1?

标签: asp.net-mvc-3 entity-framework-4 mvc-mini-profiler


【解决方案1】:

我能够从这篇帖子中截取片段MiniProfiler with EF "model first" edmx model 并首先为数据库拼接一个工作示例。现在授予此代码可能需要从控制器中拉出并退出,但它的工作方式与宣传的一样。

作为旁注,我最初的问题是询问文档中是否有错字,我不相信,有两种不同的用法,它们并不像我想的那样相互依赖。

mvc-mini-profiler FTW!

问候, 斯蒂芬

    public ActionResult Index()
    {
        // http://code.google.com/p/mvc-mini-profiler/
        // https://stackoverflow.com/questions/6802855/miniprofiler-with-ef-model-first-edmx-model

        var profiler = MiniProfiler.Current;

        var pConn = GetConnection();
        var context = pConn.CreateObjectContext<ChinookEntities>();

        using (profiler.Step("Doing complex stuff"))
        {
            using (profiler.Step("Step A"))
            {
                Thread.Sleep(100);
            }
            using (profiler.Step("Step B"))
            {
                Thread.Sleep(250);
            }
            using (profiler.Step("Step C"))
            {
                var result = context.Albums.AsQueryable()
                    .OrderBy(a => a.ArtistId).First();

                return View(result);
            }
        }
    }

    private static DbConnection GetConnection()
    {
        // A SqlConnection, SqliteConnection ... or whatever
        var connectionString = ConfigurationManager.ConnectionStrings["ChinookEntities"].ConnectionString;
        var ecsb = new EntityConnectionStringBuilder(connectionString);
        var sqlConn = new SqlConnection(ecsb.ProviderConnectionString);
        // wrap the connection with a profiling connection that tracks timings 
        return ProfiledDbConnection.Get(sqlConn, MiniProfiler.Current);
    }

【讨论】:

    【解决方案2】:

    我要说的是迷你分析器只有 4.0,但它最近已更新。这可能会有所帮助(尽管您不是代码优先)

    Using mvc-mini-profiler database profiling with Entity Framework Code First

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      相关资源
      最近更新 更多