首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq2Sql数据文本登录/注销行为

Linq2Sql数据文本登录/注销行为
EN

Stack Overflow用户
提问于 2011-05-26 14:56:20
回答 3查看 470关注 0票数 2

我使用L2S检查密钥是否已经存在,如果不存在,则创建并插入密钥。这个相同的DataContext也用于在同一个C#方法中执行其他查询。我请求using关键字在处理完DataContext后释放它。我连接了sql分析器,看到它会登录,执行查询,然后注销。即使相同的DataContext稍后将执行查询或更新,它似乎也会这样做。我以为数据文本只登录一次,并在那一次会议期间执行了所有的查询?多长时间调用SubmitChanges()重要吗?或者我错过了什么?

嘲笑我所看到的:

代码语言:javascript
复制
using(Datacontext)
{
      //Audit Login
      var b = DataContext.Table.FirstOrDefault(t=>t.Id == 4);
      //RPC: Completed
      //Audit Logout

       //Audit Login
       var x = DataContext.OtherTable.Any(t=>t.Id == 4);
       //RPC: Completed
      //Audit Logout

}

更新

sql分析器将这些注销的“持续时间”显示为几百毫秒。该是我的应用程序等待的时候了,对吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-26 15:07:59

FirstOrDefault执行一个查询,因为它需要返回一个结果,而不是一个潜在的集合-- Any也是这样。创建DataContext时,它不会立即登录。我可以向你保证,虽然这看起来很“糟糕”,但它是完全好的。

票数 1
EN

Stack Overflow用户

发布于 2011-05-26 15:05:44

在Linq-2-sql中,调用这里使用它们的任何()和.FirstOrDefault()都不能延迟。当您调用它们时,它们将导致执行。因此,在这种情况下,他们会立即开火,这也是你在分析器中注意到的。

另见:How to maintain LINQ deferred execution?

我认为,一方面是延迟执行查询,另一方面是更新。

每次调用Submitchanges时,都会提交等待发生的所有更改。通常,您只需要执行一次,并且所有的更改都在一个事务中完成。

票数 1
EN

Stack Overflow用户

发布于 2011-05-26 15:08:15

L2S数据文本不持久化连接,这就是您在分析器中看到Login/Logout的原因。它确实持久化状态,这对于更改跟踪非常重要。

下面是L2S DataContext management的一篇好文章:http://www.west-wind.com/weblog/posts/2008/Feb/05/Linq-to-SQL-DataContext-Lifetime-Management

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6140661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档