首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在N层框架中使用MiniProfiler

在N层框架中使用MiniProfiler
EN

Stack Overflow用户
提问于 2014-04-07 00:23:56
回答 1查看 332关注 0票数 1

我有一个使用BLL和DAL的MVC 4 Web应用程序。DAL使用EF6和模型第一方法。我想设置MiniProfiler来分析web和数据库调用。我通过Nuget添加了MiniProfiler和MiniProfiler.MVC4,并在网站上运行。

我的问题是,如何设置BLL和DAL来返回带有查询信息的EF调用?

以下是如何设置项目:

网络层-引用MiniProfiler、MiniProfiler.MVC和BLL项目。控制器调用BLL方法。

参考MiniProfiler和DAL项目。BLL方法调用DAL方法。

DAL -参考MiniProfiler和MiniProfiler,EF5.DAL方法使用Linq调用数据库。

基于这种设置,我可以从BLL中获得MiniProfiler数据,但是我没有收到任何EF数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 14:30:35

好吧,我弄明白了。下面是如何设置您的N层项目以支持MiniProfiler:

网络层-添加对MiniProfiler、MiniProfiler.MVC、MiniProfiler.EntityFramework和BLL项目的引用。在Global.asax中,确保打开EF分析:

代码语言:javascript
复制
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        // Entity Framework Profiling
        MiniProfilerEF.Initialize();
    }

下面是一个使用特征分析调用BLL的控制器的示例:

代码语言:javascript
复制
    [HttpGet]
    public ActionResult Index()
    {
        var profiler = MiniProfiler.Current;

        using (profiler.Step("Web Controller"))
        {
            Employee bll = new Employee();
            int value = bll.GetLastEmployeeID();
        }

        return View();
    }

添加对MiniProfiler和DAL项目的引用。BLL方法调用DAL方法。

下面是一个通过分析调用DAL的BLL方法的示例:

代码语言:javascript
复制
    public int GetLastEmployeeID()
    {
        int result = 0;
        var profiler = MiniProfiler.Current;

        using (profiler.Step("BLL - GetLastEmployeeID"))
        {
            EmployeeDAO dao = new EmployeeDAO();

            result = dao.GetLastEmployeeID();
        }

        return result;
    }

DAL -添加对MiniProfiler和MiniProfiler,EF5的引用.DAL方法使用Linq调用数据库。例如:

代码语言:javascript
复制
    public int GetLastEmployeeID()
    {
        int id = 0;

        using (var context = new CompanyEntities())
        {
            var lastEmployee = (from e in context.Employees
                               where e.IsDeleted == false
                               orderby e.EmployeeID descending
                               select e).First();

            id = lastEmployee.EmployeeID;
        }

        return id;
    }

使用此设置,我能够获得在网站上的MiniProfiler中显示的带有SQL的EF分析。

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

https://stackoverflow.com/questions/22901714

复制
相关文章

相似问题

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