Sql server 事务提交后,另一个连接无法访问插入的行
我们在使用EF6和MSSQL以及MassTransit和Rabbit MQ时遇到了一个非常奇怪的问题 情况如下:Sql server 事务提交后,另一个连接无法访问插入的行,sql-server,entity-framework,rabbitmq,masstransit,Sql Server,Entity Framework,Rabbitmq,Masstransit,我们在使用EF6和MSSQL以及MassTransit和Rabbit MQ时遇到了一个非常奇怪的问题 情况如下: 客户端应用程序在数据库中插入一行(首先通过EF代码-仅在DbContext SaveChanges中隐式事务) 客户端应用程序通过MassTransit发布行的Id 具有使用者的Windows服务将处理该消息 最初未找到行,重试几次后,将显示该行 我一直认为,在提交之后,该行将被持久化,并可供其他连接访问 我们已允许在数据库中进行快照隔离 原因是什么?在将Id发布到MQ之前,是否有任
原因是什么?在将Id发布到MQ之前,是否有任何方法可以确保该行是可访问的?如果您依赖于在事件处理程序可以继续之前完成的另一个事务,则需要使您的读取可序列化。否则,事务将彼此隔离,写入事务的结果尚不可用。您的写入可能还需要可序列化,这取决于查询的结构
是的,消费者运行得很快。如果我理解正确,如果我将插入客户端和读取消费者序列化,它将正常工作(我的意思是,届时将始终找到该行)?我已设置可序列化事务,如果一切正常,我将接受。