EF一次请求公用一个实例
应用场景:
我们在程序开发时,对数据库的操作是必不可少的部分,常规的做法是直接使用Using()语句块,在用完后立即释放连接资源,这种做法在桌面应用程序中毫无问题,但是在Web程序中,尤其是在当今大数据,高访问量的时代,响应速度成为了一个网站好坏的很作重要的衡量标准,我们也知道sqlserver的数据库连接其底层也是用socket技术实现的,那么就造成了数据库连接资源非常宝贵,那么怎么才能在web程序中充分利用这个宝贵的连接资源呢?
解决方案:
1 public class DbContextHelper 2 { 3 public static MyDbContext GetCurrentDbContext() 4 { 5 #region HttpContext 方式(内部有CallContext实现) 6 //MyDbContext dbContext = HttpContext.Current.Items["MyDbContext"] as MyDbContext; 7 //if (dbContext == null) 8 //{ 9 // dbContext = new MyDbContext(); 10 // HttpContext.Current.Items.Add("MyDbContext", dbContext); 11 //} 12 //return dbContext; 13 #endregion 14 15 #region CallContex直接实现 16 MyDbContext dbContext = CallContext.GetData("MyDbContext") as MyDbContext; 17 if (dbContext == null) 18 { 19 dbContext = new MyDbContext(); 20 CallContext.SetData("MyDbContext", dbContext); 21 } 22 return dbContext; 23 #endregion 24 } 25 } 26 public class MyDbContext 27 { 28 }