我有一个使用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数据。
发布于 2014-04-09 14:30:35
好吧,我弄明白了。下面是如何设置您的N层项目以支持MiniProfiler:
网络层-添加对MiniProfiler、MiniProfiler.MVC、MiniProfiler.EntityFramework和BLL项目的引用。在Global.asax中,确保打开EF分析:
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的控制器的示例:
[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方法的示例:
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调用数据库。例如:
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分析。
https://stackoverflow.com/questions/22901714
复制相似问题