许多DataContext单例在一个类中执行LINQ

本文关键字:一个 执行 LINQ 单例 DataContext 许多 | 更新日期: 2023-09-27 18:19:58

对于我拥有的一个类,我注意到我基本上必须对类中的每个函数使用以下场景。这是不是效率低下?是否有更好的方法来利用DataContext对象?

using (var context = new SomeDataContext(getConnectionString))
{
   //linq query here
}

许多DataContext单例在一个类中执行LINQ

它是按照您提到的方式使用的。每次对数据库执行操作时,都应该创建一个新的上下文。正如@Dan所指出的,创建上下文是非常快速和高效的。

这是一种正确而正确的方法,因为它可以通过将连接放入using子句来保证处理连接。实例化DBContext的成本也不高。

话虽如此,每次查询数据库时都会创建一个DBContext,并立即处理它,因此您不会利用DBContext类提供的Caching和其他细节。

每个请求只创建一个DBContext的一种"廉价而肮脏"的方法是在Application_BeginRequest上实例化一个DBCntext,并将其存储在HttpContext.Items集合中(基本上在临时缓存中),然后在Application_EndRequest上处理它。然后,项目中的每个类都会从HttpContext.Items缓存中获取当前的DBContext并使用它。由于Application_EndRequest无论出现什么错误都会触发,因此连接将被正确处理。

一个更好的选择是使用依赖注入框架(Structure Map、Ninject等)。你可以在谷歌上搜索如何做到这一点的教程。SO有几个问题可以帮助你,如果你有兴趣实现它

个人注意:不要担心这些事情,除非你注意到你的应用程序运行太慢,无法接受。你目前的做法很好。