在LINQ to SQL中,是否有必要在对数据库执行select之后关闭上下文(当然,在使用数据之后)?如果我把它打开,是不是意味着与服务器的连接保持打开状态?
谢谢, 卢西恩
答案 0 :(得分:2)
在使用Dispose方法关闭DataContext之前,不会关闭和释放基础连接。在使用DataContext之后,应始终调用Dispose。 将DataContext视为传统的Connection对象,或多或少都是它的底层。
答案 1 :(得分:2)
Q值。我的数据库连接保持打开多长时间?
一个。在使用查询结果之前,连接通常保持打开状态。如果您希望花时间处理所有结果并且不反对缓存结果,请将ToList(TSource)应用于查询。在每个对象只处理一次的常见场景中,流模型在DataReader和LINQ to SQL中都是优越的。
连接使用的确切细节取决于以下内容:
如果使用连接对象构造DataContext,则为连接状态。
连接字符串设置(例如,启用多个活动结果集(MARS)。有关详细信息,请参阅多个活动结果集(MARS)。
答案 2 :(得分:1)
我对LiNQ中所有东西的名字都有点不确定。在实体框架中,它意味着对象上下文正在尝试进行更改跟踪,在出现断开连接的情况时会导致很多问题。
遗憾的是,ASP.NET今天与变更跟踪不太兼容,因此在使用后关闭上下文是在asp.net中处理实体框架的最佳方式。如果我试图让tyhe上下文打开,我有时会在更新实体时遇到问题我认为它应该是Linq中的相同问题。
在具有同一计算机或本地网络中的数据库的Windows窗体应用程序中,我将通过外观重用对象上下文(减少代码重复),以便能够从更改跟踪和直接连接到数据库中受益。
答案 3 :(得分:1)