使用linq,你是否像nHibernate所要求的那样为每个请求创建一个dbContext?

时间:2009-07-02 03:52:48

标签: c# asp.net-mvc linq-to-sql

使用linq,你是否为nHibernate要求的每个请求创建一个单独的dbContext(出于性能原因,在我所理解的nhibernate中创建会话是一个昂贵的调用)。

即。在我的asp.net-mvc应用程序中,我可能针对给定的操作,在单独的调用上打了5-10次数据库。我是否需要创建一个上下文并将其重新用于整个请求?

2 个答案:

答案 0 :(得分:9)

DataContexts旨在用于与数据库交互的一组操作。我知道,这很模糊。他们的用法是情境性的。如果您正在进行相关或特定的顺序活动,那么一个DataContext可能对您有用。如果您正在进行无关或并行活动,请考虑为每个活动使用DataContext。

考虑一些指导原则:

  • 由一个DataContext检索的实体只能由同一个DataContext使用(读取:更新,删除等)。如果需要在不同的DataContexts中匹配对象,则必须执行某些操作,例如运行LINQ查询以选择具有相同主键的对象。
  • LINQ to SQL使用optimistic concurrency
  • 完成后处理DataContext(让它超出范围并进行垃圾回收就可以了)
  • 不要使用静态或共享的DataContext。

答案 1 :(得分:-1)

当我使用LinqToSql做一个小应用程序时,我发现当我每次必须打到数据库时都使用了一个create-use-dispose的DatabaseContext对象时应用程序非常缓慢。 当我开始在多个请求中共享DBContext时......应用程序突然恢复了生命周期w.r.t.响应性。

我发布的a question是相关的