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

mrb*_*lah 0 c# asp.net-mvc linq-to-sql

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

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

Jos*_*dan 9

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

考虑一些指导原则:

  • 由一个DataContext检索的实体只能由同一个DataContext使用(读取:更新,删除等).如果需要跨单独的DataContexts匹配对象,则必须执行诸如运行LINQ查询以选择具有相同主键的对象之类的操作.
  • LINQ to SQL使用乐观并发.
  • 完成后处理DataContext(让它超出范围并进行垃圾收集很好)
  • 不要使用静态或共享的DataContext.