我们有一个.Net Core 3.1
应用程序,它使用EF Core
与SQL Server
数据库连接。我们面临一个问题,当exception
由于某种原因发生在我们的方法中时,例如,在DB和SaveChanges
中,Exception
被引发,因为该字段的值被传递为null,然后下一次,当使用不同的参数调用相同的方法时(即使使用所有正确/强制字段),仍然在EF Core
中执行旧查询(我在Output
窗口中检查了这一点)。这是非常奇怪和奇怪的行为。
如果我们在第一个异常之后关闭应用程序(在调试环境中),并在下次使用正确的负载重新运行应用程序,那么一切都可以正常工作。可能是EF Core
由于某种原因再次重试先前失败的查询?或者为什么会发生这种行为?
根据您从队列中获取消息的方式,如果消息在一段时间后未被确认,则消息可能会返回到队列中。
自动确认消息将被永久删除。如果在数据库中持久化之后返回,则任何异常都将避免返回,因此消息将返回到队列。
我刚刚发现RabbitMQ的消费者类没有在依赖配置文件中正确设置。基本上,库用例在依赖配置中被实例化为静态成员,当为RabbitMQ设置消费者时,它们被传递到这些静态库对象中。我删除了这些静态对象,并使用了存储库的Scoped实例。我的问题解决了。