2012-07-01 19 views
2

当使用Linq-to-Sql时,Visual Studio会为您创建一个DataContext类。我想知道什么时候实例化这个上下文,在我的一个项目中,我使用了一个DataContext实例来处理大约300个CRUD命令(整个项目),它处理了一个稍后我设法解决的小问题,在我最近的项目中,根据CRUD命令创建它的一个实例,现在问题是什么,使用DataContext的最佳方式是什么?每个命令一个或每个项目一个?或者每笔交易可能有一笔交易(我认为这也是一个好主意)? 每种方式的速度和性能有什么不同?DataContext Scope Best-Practice

回答

4

当你保持打开太短时,会浪费性能,因为实例化DataContext并不完全免费。它很便宜但可以衡量。它显示在配置文件中。

当你把它打开过久你的问题太:

  1. 对象开始积累在它
  2. 不能在多个线程或多个事务在同一时间使用也无妨
  3. 如果您的SubmitChanges的一个失败的一些合乎逻辑的理由,背景是死了,因为同样的错误将永远出现,不管你重试多久

这里有一些规则WHA T优永远不应该深刻理解做:

  1. 有一个DataContext的多个HTTP的请求/ WCF通话
  2. 有一个DataContext的时间一个无限量(即持续一个桌面应用程序是nunning)
  3. 有跟踪实体的无限数量的一个DataContext
  4. 使用它跨线程
+0

什么叫跟踪实体是什么意思? –

+0

当你从数据库中查询一个实体时,它永远停留在你的DataContext中。它被跟踪。 – usr