2

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

4

1 回答 1

4

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

当您将其打开太久时,您也会遇到问题:

  1. 物体开始在里面堆积
  2. 无论如何,您不能同时在多个线程或多个事务中使用它
  3. 如果您的 SubmitChanges 之一由于某种逻辑原因失败,则上下文已失效,因为无论您重试多少次,都会永远出现相同的错误

以下是一些你不应该在没有深入了解的情况下做的规则:

  1. 为多个 HTTP 请求/WCF 调用提供一个 DataContext
  2. 拥有无限时间的 DataContext(即桌面应用程序的持续时间)
  3. 拥有无限数量的跟踪实体的 DataContext
  4. 跨线程使用它
于 2012-07-01T10:54:52.067 回答