Commit 5be6739c authored by Savorboard's avatar Savorboard

add and refactor transaction extension

parent f13c6ef9
using System.Data; using System.Diagnostics;
using System.Diagnostics;
using MongoDB.Driver; using MongoDB.Driver;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
...@@ -36,7 +35,7 @@ namespace DotNetCore.CAP ...@@ -36,7 +35,7 @@ namespace DotNetCore.CAP
public override void Dispose() public override void Dispose()
{ {
(DbTransaction as IDbTransaction)?.Dispose(); (DbTransaction as IClientSessionHandle)?.Dispose();
} }
} }
...@@ -55,5 +54,19 @@ namespace DotNetCore.CAP ...@@ -55,5 +54,19 @@ namespace DotNetCore.CAP
return transaction; return transaction;
} }
public static IClientSessionHandle BeginAndJoinToTransaction(this IClientSessionHandle clientSessionHandle,
ICapPublisher publisher, bool autoCommit = false)
{
var capTrans = publisher.Transaction.Begin(clientSessionHandle, autoCommit);
return new CapMongoDbClientSessionHandle(capTrans);
}
public static IClientSessionHandle StartAndJoinToTransaction(this IMongoClient client,
ICapPublisher publisher, bool autoCommit = false)
{
var clientSessionHandle = client.StartSession();
return BeginAndJoinToTransaction(clientSessionHandle, publisher, autoCommit);
}
} }
} }
...@@ -55,7 +55,6 @@ namespace DotNetCore.CAP ...@@ -55,7 +55,6 @@ namespace DotNetCore.CAP
public static ICapTransaction Begin(this ICapTransaction transaction, public static ICapTransaction Begin(this ICapTransaction transaction,
IDbContextTransaction dbTransaction, bool autoCommit = false) IDbContextTransaction dbTransaction, bool autoCommit = false)
{ {
transaction.DbTransaction = dbTransaction; transaction.DbTransaction = dbTransaction;
transaction.AutoCommit = autoCommit; transaction.AutoCommit = autoCommit;
...@@ -66,7 +65,7 @@ namespace DotNetCore.CAP ...@@ -66,7 +65,7 @@ namespace DotNetCore.CAP
ICapPublisher publisher, bool autoCommit = false) ICapPublisher publisher, bool autoCommit = false)
{ {
var trans = database.BeginTransaction(); var trans = database.BeginTransaction();
var capTrans = publisher.Transaction.Begin(trans); var capTrans = publisher.Transaction.Begin(trans, autoCommit);
return new CapEFDbTransaction(capTrans); return new CapEFDbTransaction(capTrans);
} }
} }
......
using System.Data; using System.Data;
using System.Diagnostics; using System.Diagnostics;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
...@@ -50,7 +51,7 @@ namespace DotNetCore.CAP ...@@ -50,7 +51,7 @@ namespace DotNetCore.CAP
public static class CapTransactionExtensions public static class CapTransactionExtensions
{ {
public static ICapTransaction Begin(this ICapTransaction transaction, public static ICapTransaction Begin(this ICapTransaction transaction,
IDbTransaction dbTransaction, bool autoCommit = false) IDbContextTransaction dbTransaction, bool autoCommit = false)
{ {
transaction.DbTransaction = dbTransaction; transaction.DbTransaction = dbTransaction;
transaction.AutoCommit = autoCommit; transaction.AutoCommit = autoCommit;
...@@ -58,14 +59,12 @@ namespace DotNetCore.CAP ...@@ -58,14 +59,12 @@ namespace DotNetCore.CAP
return transaction; return transaction;
} }
public static ICapTransaction Begin(this ICapTransaction transaction, public static IDbContextTransaction BeginAndJoinToTransaction(this DatabaseFacade database,
IDbContextTransaction dbTransaction, bool autoCommit = false) ICapPublisher publisher, bool autoCommit = false)
{ {
var trans = database.BeginTransaction();
transaction.DbTransaction = dbTransaction; var capTrans = publisher.Transaction.Begin(trans, autoCommit);
transaction.AutoCommit = autoCommit; return new CapEFDbTransaction(capTrans);
return transaction;
} }
} }
......
using System.Data; using System.Data;
using System.Diagnostics; using System.Diagnostics;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
...@@ -50,23 +51,20 @@ namespace DotNetCore.CAP ...@@ -50,23 +51,20 @@ namespace DotNetCore.CAP
public static class CapTransactionExtensions public static class CapTransactionExtensions
{ {
public static ICapTransaction Begin(this ICapTransaction transaction, public static ICapTransaction Begin(this ICapTransaction transaction,
IDbTransaction dbTransaction, bool autoCommit = false) IDbContextTransaction dbTransaction, bool autoCommit = false)
{ {
transaction.DbTransaction = dbTransaction; transaction.DbTransaction = dbTransaction;
transaction.AutoCommit = autoCommit; transaction.AutoCommit = autoCommit;
return transaction; return transaction;
} }
public static ICapTransaction Begin(this ICapTransaction transaction, public static IDbContextTransaction BeginAndJoinToTransaction(this DatabaseFacade database,
IDbContextTransaction dbTransaction, bool autoCommit = false) ICapPublisher publisher, bool autoCommit = false)
{ {
var trans = database.BeginTransaction();
transaction.DbTransaction = dbTransaction; var capTrans = publisher.Transaction.Begin(trans, autoCommit);
transaction.AutoCommit = autoCommit; return new CapEFDbTransaction(capTrans);
return transaction;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment