|
|
@ -12,7 +12,7 @@ namespace FLocal.MySQLConnector { |
|
|
|
|
|
|
|
|
|
|
|
internal readonly IDBTraits traits; |
|
|
|
internal readonly IDBTraits traits; |
|
|
|
|
|
|
|
|
|
|
|
private DbConnection connection; |
|
|
|
// private DbConnection connection; |
|
|
|
private string connectionString; |
|
|
|
private string connectionString; |
|
|
|
|
|
|
|
|
|
|
|
private HashSet<Transaction> transactions; |
|
|
|
private HashSet<Transaction> transactions; |
|
|
@ -20,8 +20,9 @@ namespace FLocal.MySQLConnector { |
|
|
|
public Connection(string connectionString, IDBTraits traits) { |
|
|
|
public Connection(string connectionString, IDBTraits traits) { |
|
|
|
this.traits = traits; |
|
|
|
this.traits = traits; |
|
|
|
this.connectionString = connectionString; |
|
|
|
this.connectionString = connectionString; |
|
|
|
this.connection = this.traits.createConnection(this.connectionString); |
|
|
|
using(DbConnection connection = this.createConnection()) { |
|
|
|
this.connection.Open(); |
|
|
|
//just testing we can open a connection |
|
|
|
|
|
|
|
} |
|
|
|
this.transactions = new HashSet<Transaction>(); |
|
|
|
this.transactions = new HashSet<Transaction>(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -32,7 +33,6 @@ namespace FLocal.MySQLConnector { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private List<Dictionary<string, string>> _LoadByIds(DbCommand command, ITableSpec table, List<string> ids, bool forUpdate) { |
|
|
|
private List<Dictionary<string, string>> _LoadByIds(DbCommand command, ITableSpec table, List<string> ids, bool forUpdate) { |
|
|
|
lock(this) { |
|
|
|
|
|
|
|
command.CommandType = System.Data.CommandType.Text; |
|
|
|
command.CommandType = System.Data.CommandType.Text; |
|
|
|
|
|
|
|
|
|
|
|
ParamsHolder paramsHolder = new ParamsHolder(); |
|
|
|
ParamsHolder paramsHolder = new ParamsHolder(); |
|
|
@ -74,11 +74,10 @@ namespace FLocal.MySQLConnector { |
|
|
|
} |
|
|
|
} |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<Dictionary<string, string>> LoadByIds(ITableSpec table, List<string> ids) { |
|
|
|
public List<Dictionary<string, string>> LoadByIds(ITableSpec table, List<string> ids) { |
|
|
|
lock(this) { |
|
|
|
using(DbConnection connection = this.createConnection()) { |
|
|
|
using(DbCommand command = this.connection.CreateCommand()) { |
|
|
|
using(DbCommand command = connection.CreateCommand()) { |
|
|
|
return this._LoadByIds(command, table, ids, false); |
|
|
|
return this._LoadByIds(command, table, ids, false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -151,16 +150,16 @@ namespace FLocal.MySQLConnector { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public List<string> LoadIdsByConditions(ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, Diapasone diapasone, JoinSpec[] joins, SortSpec[] sorts, bool allowHugeLists) { |
|
|
|
public List<string> LoadIdsByConditions(ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, Diapasone diapasone, JoinSpec[] joins, SortSpec[] sorts, bool allowHugeLists) { |
|
|
|
lock(this) { |
|
|
|
using(DbConnection connection = this.createConnection()) { |
|
|
|
using(DbCommand command = this.connection.CreateCommand()) { |
|
|
|
using(DbCommand command = connection.CreateCommand()) { |
|
|
|
return this._LoadIdsByConditions(command, table, conditions, diapasone, joins, sorts, allowHugeLists); |
|
|
|
return this._LoadIdsByConditions(command, table, conditions, diapasone, joins, sorts, allowHugeLists); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public long GetCountByConditions(ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, JoinSpec[] joins) { |
|
|
|
public long GetCountByConditions(ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, JoinSpec[] joins) { |
|
|
|
lock(this) { |
|
|
|
using(DbConnection connection = this.createConnection()) { |
|
|
|
using(DbCommand command = this.connection.CreateCommand()) { |
|
|
|
using(DbCommand command = connection.CreateCommand()) { |
|
|
|
|
|
|
|
|
|
|
|
command.CommandType = System.Data.CommandType.Text; |
|
|
|
command.CommandType = System.Data.CommandType.Text; |
|
|
|
|
|
|
|
|
|
|
@ -238,7 +237,7 @@ namespace FLocal.MySQLConnector { |
|
|
|
|
|
|
|
|
|
|
|
public List<string> LoadIdsByConditions(FLocal.Core.DB.Transaction _transaction, ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, Diapasone diapasone, JoinSpec[] joins, SortSpec[] sorts, bool allowHugeLists) { |
|
|
|
public List<string> LoadIdsByConditions(FLocal.Core.DB.Transaction _transaction, ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, Diapasone diapasone, JoinSpec[] joins, SortSpec[] sorts, bool allowHugeLists) { |
|
|
|
Transaction transaction = (Transaction)_transaction; |
|
|
|
Transaction transaction = (Transaction)_transaction; |
|
|
|
lock(this) { |
|
|
|
lock(transaction) { |
|
|
|
using(DbCommand command = transaction.sqlconnection.CreateCommand()) { |
|
|
|
using(DbCommand command = transaction.sqlconnection.CreateCommand()) { |
|
|
|
command.Transaction = transaction.sqltransaction; |
|
|
|
command.Transaction = transaction.sqltransaction; |
|
|
|
return this._LoadIdsByConditions(command, table, conditions, diapasone, joins, sorts, allowHugeLists); |
|
|
|
return this._LoadIdsByConditions(command, table, conditions, diapasone, joins, sorts, allowHugeLists); |
|
|
@ -316,9 +315,9 @@ namespace FLocal.MySQLConnector { |
|
|
|
} |
|
|
|
} |
|
|
|
this.transactions.Clear(); |
|
|
|
this.transactions.Clear(); |
|
|
|
this.transactions = null; |
|
|
|
this.transactions = null; |
|
|
|
this.connection.Close(); |
|
|
|
// this.connection.Close(); |
|
|
|
this.connection.Dispose(); |
|
|
|
// this.connection.Dispose(); |
|
|
|
this.connection = null; |
|
|
|
// this.connection = null; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|