Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 事务提交后,另一个连接无法访问插入的行_Sql Server_Entity Framework_Rabbitmq_Masstransit - Fatal编程技术网

Sql server 事务提交后,另一个连接无法访问插入的行

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之前,是否有任

我们在使用EF6和MSSQL以及MassTransit和Rabbit MQ时遇到了一个非常奇怪的问题

情况如下:

  • 客户端应用程序在数据库中插入一行(首先通过EF代码-仅在DbContext SaveChanges中隐式事务)
  • 客户端应用程序通过MassTransit发布行的Id
  • 具有使用者的Windows服务将处理该消息
  • 最初未找到行,重试几次后,将显示该行
  • 我一直认为,在提交之后,该行将被持久化,并可供其他连接访问

    我们已允许在数据库中进行快照隔离


    原因是什么?在将Id发布到MQ之前,是否有任何方法可以确保该行是可访问的?

    如果您依赖于在事件处理程序可以继续之前完成的另一个事务,则需要使您的读取可序列化。否则,事务将彼此隔离,写入事务的结果尚不可用。您的写入可能还需要可序列化,这取决于查询的结构


    是的,消费者运行得很快。

    如果我理解正确,如果我将插入客户端和读取消费者序列化,它将正常工作(我的意思是,届时将始终找到该行)?我已设置可序列化事务,如果一切正常,我将接受。