@@ -34,13 +34,17 @@ namespace DotNetCore.CAP.MySql | |||||
protected override void PrepareConnectionForEF() | protected override void PrepareConnectionForEF() | ||||
{ | { | ||||
DbConnection = _dbContext.Database.GetDbConnection(); | DbConnection = _dbContext.Database.GetDbConnection(); | ||||
var transaction = _dbContext.Database.CurrentTransaction; | |||||
if (transaction == null) | |||||
var dbContextTransaction = _dbContext.Database.CurrentTransaction; | |||||
var dbTrans = dbContextTransaction?.GetDbTransaction(); | |||||
//DbTransaction is dispose in original | |||||
if (dbTrans?.Connection == null) | |||||
{ | { | ||||
IsCapOpenedTrans = true; | IsCapOpenedTrans = true; | ||||
transaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); | |||||
dbContextTransaction?.Dispose(); | |||||
dbContextTransaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); | |||||
dbTrans = dbContextTransaction.GetDbTransaction(); | |||||
} | } | ||||
DbTranasaction = transaction.GetDbTransaction(); | |||||
DbTranasaction = dbTrans; | |||||
} | } | ||||
protected override void Execute(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | protected override void Execute(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | ||||
@@ -34,13 +34,17 @@ namespace DotNetCore.CAP.PostgreSql | |||||
protected override void PrepareConnectionForEF() | protected override void PrepareConnectionForEF() | ||||
{ | { | ||||
DbConnection = _dbContext.Database.GetDbConnection(); | DbConnection = _dbContext.Database.GetDbConnection(); | ||||
var transaction = _dbContext.Database.CurrentTransaction; | |||||
if (transaction == null) | |||||
var dbContextTransaction = _dbContext.Database.CurrentTransaction; | |||||
var dbTrans = dbContextTransaction?.GetDbTransaction(); | |||||
//DbTransaction is dispose in original | |||||
if (dbTrans?.Connection == null) | |||||
{ | { | ||||
IsCapOpenedTrans = true; | IsCapOpenedTrans = true; | ||||
transaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); | |||||
dbContextTransaction?.Dispose(); | |||||
dbContextTransaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); | |||||
dbTrans = dbContextTransaction.GetDbTransaction(); | |||||
} | } | ||||
DbTranasaction = transaction.GetDbTransaction(); | |||||
DbTranasaction = dbTrans; | |||||
} | } | ||||
protected override void Execute(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | protected override void Execute(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | ||||
@@ -1,5 +1,6 @@ | |||||
using System; | using System; | ||||
using System.Data; | using System.Data; | ||||
using System.Data.SqlClient; | |||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using Dapper; | using Dapper; | ||||
using DotNetCore.CAP.Abstractions; | using DotNetCore.CAP.Abstractions; | ||||
@@ -34,13 +35,17 @@ namespace DotNetCore.CAP.SqlServer | |||||
protected override void PrepareConnectionForEF() | protected override void PrepareConnectionForEF() | ||||
{ | { | ||||
DbConnection = _dbContext.Database.GetDbConnection(); | DbConnection = _dbContext.Database.GetDbConnection(); | ||||
var transaction = _dbContext.Database.CurrentTransaction; | |||||
if (transaction == null) | |||||
var dbContextTransaction = _dbContext.Database.CurrentTransaction; | |||||
var dbTrans = dbContextTransaction?.GetDbTransaction(); | |||||
//DbTransaction is dispose in original | |||||
if (dbTrans?.Connection == null) | |||||
{ | { | ||||
IsCapOpenedTrans = true; | IsCapOpenedTrans = true; | ||||
transaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); | |||||
dbContextTransaction?.Dispose(); | |||||
dbContextTransaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); | |||||
dbTrans = dbContextTransaction.GetDbTransaction(); | |||||
} | } | ||||
DbTranasaction = transaction.GetDbTransaction(); | |||||
DbTranasaction = dbTrans; | |||||
} | } | ||||
protected override void Execute(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | protected override void Execute(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | ||||
@@ -53,7 +58,6 @@ namespace DotNetCore.CAP.SqlServer | |||||
protected override async Task ExecuteAsync(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | protected override async Task ExecuteAsync(IDbConnection dbConnection, IDbTransaction dbTransaction, CapPublishedMessage message) | ||||
{ | { | ||||
await dbConnection.ExecuteAsync(PrepareSql(), message, dbTransaction); | await dbConnection.ExecuteAsync(PrepareSql(), message, dbTransaction); | ||||
_logger.LogInformation("Published Message has been persisted in the database. name:" + message.ToString()); | _logger.LogInformation("Published Message has been persisted in the database. name:" + message.ToString()); | ||||
} | } | ||||