Asp.net mvc 3 计算最大和打开的EF连接数
我有一个ASP.NET MVC应用程序,它遇到了性能瓶颈。我想分析EF连接,并找出允许的最大EF连接和当前打开的连接。有什么建议吗 我的存储库代码Asp.net mvc 3 计算最大和打开的EF连接数,asp.net-mvc-3,performance,debugging,entity-framework-4.1,Asp.net Mvc 3,Performance,Debugging,Entity Framework 4.1,我有一个ASP.NET MVC应用程序,它遇到了性能瓶颈。我想分析EF连接,并找出允许的最大EF连接和当前打开的连接。有什么建议吗 我的存储库代码 using EntityFramework.Patterns; public class ServiceRepository : IServiceRepository { private readonly IRepository<User> _userRepository;
using EntityFramework.Patterns;
public class ServiceRepository : IServiceRepository
{
private readonly IRepository<User> _userRepository;
private readonly IUnitOfWork _unitOfWork;
public ServiceRepository(DbContext dbContext)
{
var dbContextAdapter = new DbContextAdapter(dbContext);
_unitOfWork = new UnitOfWork(dbContextAdapter);
_userRepository = new Repository<User>(dbContextAdapter);
}
public IQueryable<User> GetUsersByProduct(int productId)
{
return _userRepository.AsQueryable().Where(p => p.Orders.Any(o => o.ProductId == productId));
}
//Skip code
public void Commit()
{
_unitOfWork.Commit();
}
}
注射用Ninject
private static void RegisterServices(IKernel kernel)
{
var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
kernel.Bind(typeof(DbContext)).ToMethod(context => new DbContext(connectionString)).InRequestScope();
kernel.Bind<IServiceRepository>().To<ServiceRepository>().InRequestScope();
}
EF连接使用基础连接类型,这可能是您的问题-您的EF上下文使它们保持打开状态 你反对sql server吗? 如果是这样,那么问题很可能是您的sql连接。使用ANTS profiler找出性能问题所在,并从中进行优化
您可以使用MiniProfiler或scape查看实体框架查询和一些执行状态。我还要确保您在每次请求后都会处理上下文,因此每个请求都会创建一个新的上下文。您是否正在处理DbContext/ObjectContext对象,是否正在使用using构造?如果不是,则可能是连接泄漏。另外,您确定此问题是由悬挂连接引起的吗?您是如何发现这一点的?我正在使用Ninject将DbContext注入到存储库中,其作用域为requestscope。我认为应该处理DbContext。我不确定我的性能问题是否与连接有关。只是想一块一块地找到它的位置。你看到了什么?性能问题的症状是什么?你试过分析你的应用程序吗?