Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 计算最大和打开的EF连接数_Asp.net Mvc 3_Performance_Debugging_Entity Framework 4.1 - Fatal编程技术网

Asp.net mvc 3 计算最大和打开的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;

我有一个ASP.NET MVC应用程序,它遇到了性能瓶颈。我想分析EF连接,并找出允许的最大EF连接和当前打开的连接。有什么建议吗

我的存储库代码

    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。我不确定我的性能问题是否与连接有关。只是想一块一块地找到它的位置。你看到了什么?性能问题的症状是什么?你试过分析你的应用程序吗?