栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在(不相关的)事务中使用IsolationLevel.ReadUncommitted时,SqlDependency订阅不起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在(不相关的)事务中使用IsolationLevel.ReadUncommitted时,SqlDependency订阅不起作用

恭喜您开始

SqlDependency
工作(我一点也不讽刺,很多人都因此而失败了)。

现在是时候阅读MSDN上的“创建查询通知”主题。您将看到查询对通知有效的条件,包括以下要求:

该语句不得在READ_UNCOMMITTED或SNAPSHOT隔离级别下运行。

我写的如何的基础

SqlDependency
工程,也许会澄清一些一些误解。而且,作为辅助节点,由于您使用的是Linq,因此您可能对LinqToCache感兴趣,该工具提供了
Linq
查询和之间的桥梁
SqlDependency

另一个评论:不要

Start()
Stop()
你的
SqlDependency
纳利·威利在一起。您很快就会后悔。
Start()
应该在应用启动期间被调用一次,而
Stop()
在应用关闭期间被调用一次(严格来说,是在应用域加载和卸载期间)。

现在,关于您的问题:重要的隔离级别是 通知的查询之一 。这意味着,在其上附加订阅,查询
上你做的查询

UPDATE
(我不会做下脏UPDATE的智慧评论读取…或者使用肮脏的啥子东西读)。据我所知,您显示的代码不应将查询发布到read_uncommitted下。发出
SET TRANSACTION ISOLATION...
所有后续事务(遍历所有语句)后,该会话中的事务将处于该隔离级别下。您关闭该连接(通过处理DataContext),然后使用其他连接。除非…您使用连接池。欢迎来到无辜受害者俱乐部:)。连接池泄漏跨
Close()
/
Open()
边界的隔离级别更改。那就是你的问题。有一些简单的解决方案:

  • 您可以(必须!)在此之后显式重置隔离级别。
    Open()
  • 您可以使用System.Transactions范围(我的建议)。强制性阅读:使用新的TransactionScope()被认为有害
  • 不要使用连接池。

而且,当我们聊天时,您还需要阅读以下内容:将表用作队列。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号