我正在创建一个将使用 Linq-To-Sql 执行仅选择查询的网络服务。在这方面,是否可以接受将 DataContext 作为静态字段/属性,因为操作永远不会是修改数据库或跟踪对象更改的操作?
如果不是,哪些替代方法是合适的?
我正在创建一个将使用 Linq-To-Sql 执行仅选择查询的网络服务。在这方面,是否可以接受将 DataContext 作为静态字段/属性,因为操作永远不会是修改数据库或跟踪对象更改的操作?
如果不是,哪些替代方法是合适的?
DataContext 不是线程安全的,因此将其存储在静态中不是一个好主意。
DataContext 的寿命并不长,只是在请求处理期间对其进行实例化。
我会在每个方法调用上重新创建数据上下文,包装在 using 块中。这将有助于确保由于操作而创建的对象得到处置并减少内存占用。由于对象被序列化以被发回,因此不需要将数据上下文保持得比调用所需的时间长。数据上下文本身并不是一个特别重的对象,不应避免根据需要重新创建它。这实际上就是它的预期用途——作为一个工作对象单元。