Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Async transaction API #100

Open
MaceWindu opened this issue Jan 28, 2019 · 4 comments
Open

[Feature] Async transaction API #100

MaceWindu opened this issue Jan 28, 2019 · 4 comments
Milestone

Comments

@MaceWindu
Copy link

Hi, guys. For next release of linq2db we plan to add async transaction API support, which requires support from underlying providers.
Npgsql and mysqlconnector already provide such API and it would be nice if you can add such API too.

Unfortunatelly ADO.NET doesn't have such API right now:
Async transaction API request for .net core: https://github.com/dotnet/corefx/issues/10975
Async transaction API request for ef core: dotnet/efcore#9015

@senseibaka
Copy link
Collaborator

This shouldn't be too hard to implement -- technically this driver executes everything async, and the synchronous methods wrap the paradigm.

I'm hoping to get some free time to work on the driver "soon" (tm).

The issue you linked hasn't prescribed any method signatures, do you have any suggestions?

@senseibaka senseibaka added this to the 0.14.0 milestone Jan 28, 2019
@MaceWindu
Copy link
Author

MaceWindu commented Jan 29, 2019

Sure.

// AseTransaction
public Task CommitAsync()
public Task CommitAsync(CancellationToken cancellationToken)
public Task RollbackAsync()
public Task RollbackAsync(CancellationToken cancellationToken)

// AseConnection
public Task<AseTransaction> BeginTransactionAsync()
public Task<AseTransaction> BeginTransactionAsync(CancellationToken cancellationToken)
public Task<AseTransaction> BeginTransactionAsync(IsolationLevel isolationLevel)
public Task<AseTransaction> BeginTransactionAsync(IsolationLevel isolationLevel, CancellationToken cancellationToken)

npgsql transaction methods (no BeginTransaction, as npgsql don't need it): https://www.fuget.org/packages/Npgsql/4.0.4/lib/netstandard2.0/Npgsql.dll/Npgsql/NpgsqlTransaction
mysqlconnector BeginTransactionAsync: https://www.fuget.org/packages/MySqlConnector/0.49.3/lib/netstandard2.0/MySqlConnector.dll/MySql.Data.MySqlClient/MySqlConnection
mysqlconnector Transaction methods: https://www.fuget.org/packages/MySqlConnector/0.49.3/lib/netstandard2.0/MySqlConnector.dll/MySql.Data.MySqlClient/MySqlTransaction

@MaceWindu
Copy link
Author

Also there is a good .net core API proposal here https://github.com/dotnet/corefx/issues/35012 with more methods

@senseibaka senseibaka modified the milestones: 0.14.0, 0.15.0 Jun 9, 2019
@senseibaka senseibaka modified the milestones: 0.15.0, Backlog Jun 21, 2019
@bbarry
Copy link
Contributor

bbarry commented Feb 11, 2020

Heads up, this shipped in .net core 3.0: dotnet/runtime#28596

This is probably a good thing to look into for #145

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants