A razão pela qual as operações são executadas (ou seja, os dados ainda foram inseridos após o aborto), porque as operações não estão contidas em uma sessão transacional.
Todas as operações CRUD devem ter métodos sobrecarregados que especificam
IClientSessionHandle
como seu primeiro argumento. Por exemplo:Task InsertOneAsync(IClientSessionHandle session, TDocument document, InsertOneOptions options = null, CancellationToken cancellationToken = default(CancellationToken));
Consulte:InsertOneAsync e ReplaceOneAsync no driver MongoDB .NET/C# v2.8.1.
Para garantir que as operações estejam contidas na sessão transacional, passe a sessão como um argumento para as operações CRUD. Quaisquer operações que não tenham o objeto de sessão serão executadas fora da sessão.