Commit a1561bd2 authored by yangxiaodong's avatar yangxiaodong

refactor.

parent ada241eb
...@@ -74,11 +74,7 @@ namespace DotNetCore.CAP.MySql ...@@ -74,11 +74,7 @@ namespace DotNetCore.CAP.MySql
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
if (dbConnection == null) PrePareConnection(dbConnection, ref dbTransaction);
throw new ArgumentNullException(nameof(dbConnection));
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
IsCapOpenedTrans = true;
PublishWithTrans(name, content, dbConnection, dbTransaction); PublishWithTrans(name, content, dbConnection, dbTransaction);
} }
...@@ -87,11 +83,7 @@ namespace DotNetCore.CAP.MySql ...@@ -87,11 +83,7 @@ namespace DotNetCore.CAP.MySql
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
if (dbConnection == null) PrePareConnection(dbConnection, ref dbTransaction);
throw new ArgumentNullException(nameof(dbConnection));
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
IsCapOpenedTrans = true;
return PublishWithTransAsync(name, content, dbConnection, dbTransaction); return PublishWithTransAsync(name, content, dbConnection, dbTransaction);
} }
...@@ -100,13 +92,10 @@ namespace DotNetCore.CAP.MySql ...@@ -100,13 +92,10 @@ namespace DotNetCore.CAP.MySql
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
if (dbConnection == null) PrePareConnection(dbConnection, ref dbTransaction);
throw new ArgumentNullException(nameof(dbConnection));
var content = Helper.ToJson(contentObj); var content = Helper.ToJson(contentObj);
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
PublishWithTrans(name, content, dbConnection, dbTransaction); PublishWithTrans(name, content, dbConnection, dbTransaction);
} }
...@@ -114,18 +103,30 @@ namespace DotNetCore.CAP.MySql ...@@ -114,18 +103,30 @@ namespace DotNetCore.CAP.MySql
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
if (dbConnection == null) PrePareConnection(dbConnection, ref dbTransaction);
throw new ArgumentNullException(nameof(dbConnection));
var content = Helper.ToJson(contentObj); var content = Helper.ToJson(contentObj);
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
return PublishWithTransAsync(name, content, dbConnection, dbTransaction); return PublishWithTransAsync(name, content, dbConnection, dbTransaction);
} }
#region private methods #region private methods
private void PrePareConnection(IDbConnection dbConnection, ref IDbTransaction dbTransaction)
{
if (dbConnection == null)
throw new ArgumentNullException(nameof(dbConnection));
if (dbConnection.State != ConnectionState.Open)
dbConnection.Open();
if (dbTransaction == null)
{
IsCapOpenedTrans = true;
dbTransaction = dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
}
}
private void CheckIsUsingEF(string name) private void CheckIsUsingEF(string name)
{ {
if (name == null) throw new ArgumentNullException(nameof(name)); if (name == null) throw new ArgumentNullException(nameof(name));
...@@ -145,8 +146,11 @@ namespace DotNetCore.CAP.MySql ...@@ -145,8 +146,11 @@ namespace DotNetCore.CAP.MySql
{ {
var connection = _dbContext.Database.GetDbConnection(); var connection = _dbContext.Database.GetDbConnection();
var transaction = _dbContext.Database.CurrentTransaction; var transaction = _dbContext.Database.CurrentTransaction;
IsCapOpenedTrans = transaction == null; if (transaction == null)
transaction = transaction ?? await _dbContext.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted); {
IsCapOpenedTrans = true;
transaction = await _dbContext.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted);
}
var dbTransaction = transaction.GetDbTransaction(); var dbTransaction = transaction.GetDbTransaction();
await PublishWithTransAsync(name, content, connection, dbTransaction); await PublishWithTransAsync(name, content, connection, dbTransaction);
} }
...@@ -155,8 +159,11 @@ namespace DotNetCore.CAP.MySql ...@@ -155,8 +159,11 @@ namespace DotNetCore.CAP.MySql
{ {
var connection = _dbContext.Database.GetDbConnection(); var connection = _dbContext.Database.GetDbConnection();
var transaction = _dbContext.Database.CurrentTransaction; var transaction = _dbContext.Database.CurrentTransaction;
IsCapOpenedTrans = transaction == null; if (transaction == null)
transaction = transaction ?? _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); {
IsCapOpenedTrans = true;
transaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted);
}
var dbTransaction = transaction.GetDbTransaction(); var dbTransaction = transaction.GetDbTransaction();
PublishWithTrans(name, content, connection, dbTransaction); PublishWithTrans(name, content, connection, dbTransaction);
} }
......
...@@ -73,12 +73,7 @@ namespace DotNetCore.CAP.SqlServer ...@@ -73,12 +73,7 @@ namespace DotNetCore.CAP.SqlServer
public void Publish(string name, string content, IDbConnection dbConnection, IDbTransaction dbTransaction = null) public void Publish(string name, string content, IDbConnection dbConnection, IDbTransaction dbTransaction = null)
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
PrePareConnection(dbConnection, ref dbTransaction);
if (dbConnection == null)
throw new ArgumentNullException(nameof(dbConnection));
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
IsCapOpenedTrans = true;
PublishWithTrans(name, content, dbConnection, dbTransaction); PublishWithTrans(name, content, dbConnection, dbTransaction);
} }
...@@ -86,12 +81,7 @@ namespace DotNetCore.CAP.SqlServer ...@@ -86,12 +81,7 @@ namespace DotNetCore.CAP.SqlServer
public Task PublishAsync(string name, string content, IDbConnection dbConnection, IDbTransaction dbTransaction = null) public Task PublishAsync(string name, string content, IDbConnection dbConnection, IDbTransaction dbTransaction = null)
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
PrePareConnection(dbConnection, ref dbTransaction);
if (dbConnection == null)
throw new ArgumentNullException(nameof(dbConnection));
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
IsCapOpenedTrans = true;
return PublishWithTransAsync(name, content, dbConnection, dbTransaction); return PublishWithTransAsync(name, content, dbConnection, dbTransaction);
} }
...@@ -99,33 +89,40 @@ namespace DotNetCore.CAP.SqlServer ...@@ -99,33 +89,40 @@ namespace DotNetCore.CAP.SqlServer
public void Publish<T>(string name, T contentObj, IDbConnection dbConnection, IDbTransaction dbTransaction = null) public void Publish<T>(string name, T contentObj, IDbConnection dbConnection, IDbTransaction dbTransaction = null)
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
PrePareConnection(dbConnection, ref dbTransaction);
if (dbConnection == null)
throw new ArgumentNullException(nameof(dbConnection));
var content = Helper.ToJson(contentObj); var content = Helper.ToJson(contentObj);
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
PublishWithTrans(name, content, dbConnection, dbTransaction); PublishWithTrans(name, content, dbConnection, dbTransaction);
} }
public Task PublishAsync<T>(string name, T contentObj, IDbConnection dbConnection, IDbTransaction dbTransaction = null) public Task PublishAsync<T>(string name, T contentObj, IDbConnection dbConnection, IDbTransaction dbTransaction = null)
{ {
CheckIsAdoNet(name); CheckIsAdoNet(name);
PrePareConnection(dbConnection, ref dbTransaction);
if (dbConnection == null)
throw new ArgumentNullException(nameof(dbConnection));
var content = Helper.ToJson(contentObj); var content = Helper.ToJson(contentObj);
dbTransaction = dbTransaction ?? dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
return PublishWithTransAsync(name, content, dbConnection, dbTransaction); return PublishWithTransAsync(name, content, dbConnection, dbTransaction);
} }
#region private methods #region private methods
private void PrePareConnection(IDbConnection dbConnection, ref IDbTransaction dbTransaction)
{
if (dbConnection == null)
throw new ArgumentNullException(nameof(dbConnection));
if (dbConnection.State != ConnectionState.Open)
dbConnection.Open();
if (dbTransaction == null)
{
IsCapOpenedTrans = true;
dbTransaction = dbConnection.BeginTransaction(IsolationLevel.ReadCommitted);
}
}
private void CheckIsUsingEF(string name) private void CheckIsUsingEF(string name)
{ {
if (name == null) throw new ArgumentNullException(nameof(name)); if (name == null) throw new ArgumentNullException(nameof(name));
...@@ -145,8 +142,11 @@ namespace DotNetCore.CAP.SqlServer ...@@ -145,8 +142,11 @@ namespace DotNetCore.CAP.SqlServer
{ {
var connection = _dbContext.Database.GetDbConnection(); var connection = _dbContext.Database.GetDbConnection();
var transaction = _dbContext.Database.CurrentTransaction; var transaction = _dbContext.Database.CurrentTransaction;
IsCapOpenedTrans = transaction == null; if (transaction == null)
transaction = transaction ?? await _dbContext.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted); {
IsCapOpenedTrans = true;
transaction = await _dbContext.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted);
}
var dbTransaction = transaction.GetDbTransaction(); var dbTransaction = transaction.GetDbTransaction();
await PublishWithTransAsync(name, content, connection, dbTransaction); await PublishWithTransAsync(name, content, connection, dbTransaction);
} }
...@@ -155,8 +155,11 @@ namespace DotNetCore.CAP.SqlServer ...@@ -155,8 +155,11 @@ namespace DotNetCore.CAP.SqlServer
{ {
var connection = _dbContext.Database.GetDbConnection(); var connection = _dbContext.Database.GetDbConnection();
var transaction = _dbContext.Database.CurrentTransaction; var transaction = _dbContext.Database.CurrentTransaction;
IsCapOpenedTrans = transaction == null; if (transaction == null)
transaction = transaction ?? _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted); {
IsCapOpenedTrans = true;
transaction = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted);
}
var dbTransaction = transaction.GetDbTransaction(); var dbTransaction = transaction.GetDbTransaction();
PublishWithTrans(name, content, connection, dbTransaction); PublishWithTrans(name, content, connection, dbTransaction);
} }
......
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