Update MySql

This commit is contained in:
sunkaixuan 2017-06-25 07:12:07 +08:00
parent 2e138209d8
commit c1a4e7efdf
4 changed files with 105 additions and 59 deletions

View File

@ -35,7 +35,7 @@ namespace OrmTest
// new SqlSugarPerformance(100).Select(); // new SqlSugarPerformance(100).Select();
/***Demo***/ /***Demo***/
// OrmTest.Demo.Query.Init(); OrmTest.Demo.Query.Init();
//OrmTest.Demo.Insert.Init(); //OrmTest.Demo.Insert.Init();
//OrmTest.Demo.Delete.Init(); //OrmTest.Demo.Delete.Init();
//OrmTest.Demo.Update.Init(); //OrmTest.Demo.Update.Init();

View File

@ -38,7 +38,7 @@ namespace SqlSugar
QueryBuilder.Clear(); QueryBuilder.Clear();
} }
public ISugarQueryable<T> AS<T2>(string tableName) public virtual ISugarQueryable<T> AS<T2>(string tableName)
{ {
var entityName = typeof(T2).Name; var entityName = typeof(T2).Name;
IsAs = true; IsAs = true;
@ -56,13 +56,13 @@ namespace SqlSugar
this.Context.MappingTables.Add(entityName, tableName); this.Context.MappingTables.Add(entityName, tableName);
return this; return this;
} }
public ISugarQueryable<T> With(string withString) public virtual ISugarQueryable<T> With(string withString)
{ {
QueryBuilder.TableWithString = withString; QueryBuilder.TableWithString = withString;
return this; return this;
} }
public ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter = false) public virtual ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter = false)
{ {
QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter; QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter;
if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable()) if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable())
@ -77,24 +77,24 @@ namespace SqlSugar
return this; return this;
} }
public ISugarQueryable<T> AddParameters(object parameters) public virtual ISugarQueryable<T> AddParameters(object parameters)
{ {
if (parameters != null) if (parameters != null)
QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters));
return this; return this;
} }
public ISugarQueryable<T> AddParameters(SugarParameter[] parameters) public virtual ISugarQueryable<T> AddParameters(SugarParameter[] parameters)
{ {
QueryBuilder.Parameters.AddRange(parameters); QueryBuilder.Parameters.AddRange(parameters);
return this; return this;
} }
public ISugarQueryable<T> AddParameters(SugarParameter parameter) public virtual ISugarQueryable<T> AddParameters(SugarParameter parameter)
{ {
QueryBuilder.Parameters.Add(parameter); QueryBuilder.Parameters.Add(parameter);
return this; return this;
} }
public ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) public virtual ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left)
{ {
QueryBuilder.JoinIndex = +1; QueryBuilder.JoinIndex = +1;
@ -115,12 +115,12 @@ namespace SqlSugar
this._Where(expression); this._Where(expression);
return this; return this;
} }
public ISugarQueryable<T> Where(string whereString, object whereObj = null) public virtual ISugarQueryable<T> Where(string whereString, object whereObj = null)
{ {
this.Where<T>(whereString, whereObj); this.Where<T>(whereString, whereObj);
return this; return this;
} }
public ISugarQueryable<T> Where<T2>(string whereString, object whereObj = null) public virtual ISugarQueryable<T> Where<T2>(string whereString, object whereObj = null)
{ {
var whereValue = QueryBuilder.WhereInfos; var whereValue = QueryBuilder.WhereInfos;
whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString)); whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString));
@ -129,12 +129,12 @@ namespace SqlSugar
return this; return this;
} }
public ISugarQueryable<T> Having(Expression<Func<T, bool>> expression) public virtual ISugarQueryable<T> Having(Expression<Func<T, bool>> expression)
{ {
this._Having(expression); this._Having(expression);
return this; return this;
} }
public ISugarQueryable<T> Having(string whereString, object parameters = null) public virtual ISugarQueryable<T> Having(string whereString, object parameters = null)
{ {
QueryBuilder.HavingInfos = SqlBuilder.AppendHaving(whereString); QueryBuilder.HavingInfos = SqlBuilder.AppendHaving(whereString);
@ -149,20 +149,20 @@ namespace SqlSugar
_Where(expression); _Where(expression);
return this; return this;
} }
public ISugarQueryable<T> WhereIF(bool isWhere, string whereString, object whereObj = null) public virtual ISugarQueryable<T> WhereIF(bool isWhere, string whereString, object whereObj = null)
{ {
if (!isWhere) return this; if (!isWhere) return this;
this.Where<T>(whereString, whereObj); this.Where<T>(whereString, whereObj);
return this; return this;
} }
public T InSingle(object pkValue) public virtual T InSingle(object pkValue)
{ {
var list = In(pkValue).ToList(); var list = In(pkValue).ToList();
if (list == null) return default(T); if (list == null) return default(T);
else return list.SingleOrDefault(); else return list.SingleOrDefault();
} }
public ISugarQueryable<T> In<TParamter>(params TParamter[] pkValues) public virtual ISugarQueryable<T> In<TParamter>(params TParamter[] pkValues)
{ {
if (pkValues == null || pkValues.Length == 0) if (pkValues == null || pkValues.Length == 0)
{ {
@ -176,7 +176,7 @@ namespace SqlSugar
filed = shortName + filed; filed = shortName + filed;
return In(filed, pkValues); return In(filed, pkValues);
} }
public ISugarQueryable<T> In<FieldType>(string filed, params FieldType[] inValues) public virtual ISugarQueryable<T> In<FieldType>(string filed, params FieldType[] inValues)
{ {
if (inValues.Length == 1) if (inValues.Length == 1)
{ {
@ -216,14 +216,14 @@ namespace SqlSugar
} }
return this; return this;
} }
public ISugarQueryable<T> In<FieldType>(Expression<Func<T, object>> expression, params FieldType[] inValues) public virtual ISugarQueryable<T> In<FieldType>(Expression<Func<T, object>> expression, params FieldType[] inValues)
{ {
var isSingle = QueryBuilder.IsSingle(); var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var fieldName = lamResult.GetResultString(); var fieldName = lamResult.GetResultString();
return In(fieldName, inValues); return In(fieldName, inValues);
} }
public ISugarQueryable<T> In<TParamter>(List<TParamter> pkValues) { public virtual ISugarQueryable<T> In<TParamter>(List<TParamter> pkValues) {
if (pkValues == null || pkValues.Count == 0) if (pkValues == null || pkValues.Count == 0)
{ {
Where(SqlBuilder.SqlFalse); Where(SqlBuilder.SqlFalse);
@ -231,7 +231,7 @@ namespace SqlSugar
} }
return In(pkValues.ToArray()); return In(pkValues.ToArray());
} }
public ISugarQueryable<T> In<FieldType>(string InFieldName, List<FieldType> inValues) { public virtual ISugarQueryable<T> In<FieldType>(string InFieldName, List<FieldType> inValues) {
if (inValues == null || inValues.Count == 0) if (inValues == null || inValues.Count == 0)
{ {
Where(SqlBuilder.SqlFalse); Where(SqlBuilder.SqlFalse);
@ -239,7 +239,7 @@ namespace SqlSugar
} }
return In(InFieldName, inValues.ToArray()); return In(InFieldName, inValues.ToArray());
} }
public ISugarQueryable<T> In<FieldType>(Expression<Func<T, object>> expression, List<FieldType> inValues) { public virtual ISugarQueryable<T> In<FieldType>(Expression<Func<T, object>> expression, List<FieldType> inValues) {
if (inValues == null || inValues.Count == 0) if (inValues == null || inValues.Count == 0)
{ {
Where(SqlBuilder.SqlFalse); Where(SqlBuilder.SqlFalse);
@ -247,7 +247,7 @@ namespace SqlSugar
} }
return In(expression, inValues.ToArray()); return In(expression, inValues.ToArray());
} }
public ISugarQueryable<T> OrderBy(string orderFileds) public virtual ISugarQueryable<T> OrderBy(string orderFileds)
{ {
var orderByValue = QueryBuilder.OrderByValue; var orderByValue = QueryBuilder.OrderByValue;
if (QueryBuilder.OrderByValue.IsNullOrEmpty()) if (QueryBuilder.OrderByValue.IsNullOrEmpty())
@ -257,18 +257,18 @@ namespace SqlSugar
QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds); QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds);
return this; return this;
} }
public ISugarQueryable<T> OrderBy(Expression<Func<T, object>> expression, OrderByType type = OrderByType.Asc) public virtual ISugarQueryable<T> OrderBy(Expression<Func<T, object>> expression, OrderByType type = OrderByType.Asc)
{ {
this._OrderBy(expression, type); this._OrderBy(expression, type);
return this; return this;
} }
public ISugarQueryable<T> GroupBy(Expression<Func<T, object>> expression) public virtual ISugarQueryable<T> GroupBy(Expression<Func<T, object>> expression)
{ {
_GroupBy(expression); _GroupBy(expression);
return this; return this;
} }
public ISugarQueryable<T> GroupBy(string groupFileds) public virtual ISugarQueryable<T> GroupBy(string groupFileds)
{ {
var croupByValue = QueryBuilder.GroupByValue; var croupByValue = QueryBuilder.GroupByValue;
if (QueryBuilder.GroupByValue.IsNullOrEmpty()) if (QueryBuilder.GroupByValue.IsNullOrEmpty())
@ -279,14 +279,14 @@ namespace SqlSugar
return this; return this;
} }
public ISugarQueryable<T> PartitionBy(Expression<Func<T, object>> expression) public virtual ISugarQueryable<T> PartitionBy(Expression<Func<T, object>> expression)
{ {
if (QueryBuilder.Take == null) if (QueryBuilder.Take == null)
QueryBuilder.Take = 0; QueryBuilder.Take = 0;
_PartitionBy(expression); _PartitionBy(expression);
return this; return this;
} }
public ISugarQueryable<T> PartitionBy(string groupFileds) public virtual ISugarQueryable<T> PartitionBy(string groupFileds)
{ {
var partitionByValue = QueryBuilder.PartitionByValue; var partitionByValue = QueryBuilder.PartitionByValue;
if (QueryBuilder.PartitionByValue.IsNullOrEmpty()) if (QueryBuilder.PartitionByValue.IsNullOrEmpty())
@ -297,18 +297,18 @@ namespace SqlSugar
return this; return this;
} }
public ISugarQueryable<T> Skip(int num) public virtual ISugarQueryable<T> Skip(int num)
{ {
QueryBuilder.Skip = num; QueryBuilder.Skip = num;
return this; return this;
} }
public ISugarQueryable<T> Take(int num) public virtual ISugarQueryable<T> Take(int num)
{ {
QueryBuilder.Take = num; QueryBuilder.Take = num;
return this; return this;
} }
public T Single() public virtual T Single()
{ {
if (QueryBuilder.OrderByValue.IsNullOrEmpty()) if (QueryBuilder.OrderByValue.IsNullOrEmpty())
{ {
@ -326,13 +326,13 @@ namespace SqlSugar
return default(T); return default(T);
} }
} }
public T Single(Expression<Func<T, bool>> expression) public virtual T Single(Expression<Func<T, bool>> expression)
{ {
_Where(expression); _Where(expression);
return Single(); return Single();
} }
public T First() public virtual T First()
{ {
if (QueryBuilder.OrderByValue.IsNullOrEmpty()) if (QueryBuilder.OrderByValue.IsNullOrEmpty())
{ {
@ -350,27 +350,27 @@ namespace SqlSugar
return default(T); return default(T);
} }
} }
public T First(Expression<Func<T, bool>> expression) public virtual T First(Expression<Func<T, bool>> expression)
{ {
_Where(expression); _Where(expression);
return First(); return First();
} }
public bool Any(Expression<Func<T, bool>> expression) public virtual bool Any(Expression<Func<T, bool>> expression)
{ {
_Where(expression); _Where(expression);
return Any(); return Any();
} }
public bool Any() public virtual bool Any()
{ {
return this.Count() > 0; return this.Count() > 0;
} }
public ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression) public virtual ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression)
{ {
return _Select<TResult>(expression); return _Select<TResult>(expression);
} }
public ISugarQueryable<TResult> Select<TResult>(string selectValue) where TResult : class, new() public virtual ISugarQueryable<TResult> Select<TResult>(string selectValue) where TResult : class, new()
{ {
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig); var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
reval.Context = this.Context; reval.Context = this.Context;
@ -378,13 +378,13 @@ namespace SqlSugar
QueryBuilder.SelectValue = selectValue; QueryBuilder.SelectValue = selectValue;
return reval; return reval;
} }
public ISugarQueryable<T> Select(string selectValue) public virtual ISugarQueryable<T> Select(string selectValue)
{ {
QueryBuilder.SelectValue = selectValue; QueryBuilder.SelectValue = selectValue;
return this; return this;
} }
public int Count() public virtual int Count()
{ {
QueryBuilder.IsCount = true; QueryBuilder.IsCount = true;
var sql = QueryBuilder.ToSqlString(); var sql = QueryBuilder.ToSqlString();
@ -394,76 +394,76 @@ namespace SqlSugar
return reval; return reval;
} }
public TResult Max<TResult>(string maxField) public virtual TResult Max<TResult>(string maxField)
{ {
this.Select(string.Format(QueryBuilder.MaxTemplate, maxField)); this.Select(string.Format(QueryBuilder.MaxTemplate, maxField));
var reval = this._ToList<TResult>().SingleOrDefault(); var reval = this._ToList<TResult>().SingleOrDefault();
return reval; return reval;
} }
public TResult Max<TResult>(Expression<Func<T, TResult>> expression) public virtual TResult Max<TResult>(Expression<Func<T, TResult>> expression)
{ {
var isSingle = QueryBuilder.IsSingle(); var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Max<TResult>(lamResult.GetResultString()); return Max<TResult>(lamResult.GetResultString());
} }
public TResult Min<TResult>(string minField) public virtual TResult Min<TResult>(string minField)
{ {
this.Select(string.Format(QueryBuilder.MinTemplate, minField)); this.Select(string.Format(QueryBuilder.MinTemplate, minField));
var reval = this._ToList<TResult>().SingleOrDefault(); var reval = this._ToList<TResult>().SingleOrDefault();
return reval; return reval;
} }
public TResult Min<TResult>(Expression<Func<T, TResult>> expression) public virtual TResult Min<TResult>(Expression<Func<T, TResult>> expression)
{ {
var isSingle = QueryBuilder.IsSingle(); var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Min<TResult>(lamResult.GetResultString()); return Min<TResult>(lamResult.GetResultString());
} }
public TResult Sum<TResult>(string sumField) public virtual TResult Sum<TResult>(string sumField)
{ {
this.Select(string.Format(QueryBuilder.SumTemplate, sumField)); this.Select(string.Format(QueryBuilder.SumTemplate, sumField));
var reval = this._ToList<TResult>().SingleOrDefault(); var reval = this._ToList<TResult>().SingleOrDefault();
return reval; return reval;
} }
public TResult Sum<TResult>(Expression<Func<T, TResult>> expression) public virtual TResult Sum<TResult>(Expression<Func<T, TResult>> expression)
{ {
var isSingle = QueryBuilder.IsSingle(); var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Sum<TResult>(lamResult.GetResultString()); return Sum<TResult>(lamResult.GetResultString());
} }
public TResult Avg<TResult>(string avgField) public virtual TResult Avg<TResult>(string avgField)
{ {
this.Select(string.Format(QueryBuilder.AvgTemplate, avgField)); this.Select(string.Format(QueryBuilder.AvgTemplate, avgField));
var reval = this._ToList<TResult>().SingleOrDefault(); var reval = this._ToList<TResult>().SingleOrDefault();
return reval; return reval;
} }
public TResult Avg<TResult>(Expression<Func<T, TResult>> expression) public virtual TResult Avg<TResult>(Expression<Func<T, TResult>> expression)
{ {
var isSingle = QueryBuilder.IsSingle(); var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Avg<TResult>(lamResult.GetResultString()); return Avg<TResult>(lamResult.GetResultString());
} }
public string ToJson() public virtual string ToJson()
{ {
return this.Context.RewritableMethods.SerializeObject(this.ToList()); return this.Context.RewritableMethods.SerializeObject(this.ToList());
} }
public string ToJsonPage(int pageIndex, int pageSize) public virtual string ToJsonPage(int pageIndex, int pageSize)
{ {
return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize)); return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize));
} }
public string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber) public virtual string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber)
{ {
return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber)); return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber));
} }
public DataTable ToDataTable() public virtual DataTable ToDataTable()
{ {
var sqlObj = this.ToSql(); var sqlObj = this.ToSql();
RestoreMapping(); RestoreMapping();
var result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); var result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray());
return result; return result;
} }
public DataTable ToDataTablePage(int pageIndex, int pageSize) public virtual DataTable ToDataTablePage(int pageIndex, int pageSize)
{ {
if (pageIndex == 0) if (pageIndex == 0)
pageIndex = 1; pageIndex = 1;
@ -471,17 +471,17 @@ namespace SqlSugar
QueryBuilder.Take = pageSize; QueryBuilder.Take = pageSize;
return ToDataTable(); return ToDataTable();
} }
public DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber) public virtual DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber)
{ {
totalNumber = this.Count(); totalNumber = this.Count();
return ToDataTablePage(pageIndex, pageSize); return ToDataTablePage(pageIndex, pageSize);
} }
public List<T> ToList() public virtual List<T> ToList()
{ {
return _ToList<T>(); return _ToList<T>();
} }
public List<T> ToPageList(int pageIndex, int pageSize) public virtual List<T> ToPageList(int pageIndex, int pageSize)
{ {
if (pageIndex == 0) if (pageIndex == 0)
pageIndex = 1; pageIndex = 1;
@ -489,13 +489,13 @@ namespace SqlSugar
QueryBuilder.Take = pageSize; QueryBuilder.Take = pageSize;
return ToList(); return ToList();
} }
public List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber) public virtual List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber)
{ {
totalNumber = this.Count(); totalNumber = this.Count();
return ToPageList(pageIndex, pageSize); return ToPageList(pageIndex, pageSize);
} }
public KeyValuePair<string, List<SugarParameter>> ToSql() public virtual KeyValuePair<string, List<SugarParameter>> ToSql()
{ {
string sql = QueryBuilder.ToSqlString(); string sql = QueryBuilder.ToSqlString();
RestoreMapping(); RestoreMapping();

View File

@ -2,7 +2,10 @@
{ {
public class MySqlQueryable<T>:QueryableProvider<T> public class MySqlQueryable<T>:QueryableProvider<T>
{ {
public override ISugarQueryable<T> With(string withString)
{
return this;
}
} }
public class MySqlQueryable<T,T2> : QueryableProvider<T,T2> public class MySqlQueryable<T,T2> : QueryableProvider<T,T2>
{ {

View File

@ -1,4 +1,6 @@
namespace SqlSugar using System;
using System.Linq;
namespace SqlSugar
{ {
public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions
{ {
@ -7,7 +9,48 @@
{ {
base.DbMehtods = new MySqlMethod(); base.DbMehtods = new MySqlMethod();
} }
public override string GetTranslationTableName(string entityName, bool isMapping = true)
{
Check.ArgumentNullException(entityName, string.Format(ErrorMessage.ObjNotExist, "Table Name"));
if (IsTranslationText(entityName)) return entityName;
if (isMapping && this.MappingTables.IsValuable())
{
if (entityName.Contains("."))
{
var columnInfo = entityName.Split('.');
var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(columnInfo.Last(), StringComparison.CurrentCultureIgnoreCase));
if (mappingInfo != null)
{
columnInfo[columnInfo.Length - 1] = mappingInfo.EntityName;
}
return string.Join(".", columnInfo.Select(it => GetTranslationText(it)));
}
else
{
var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase));
return "`" + (mappingInfo == null ? entityName : mappingInfo.EntityName) + "`";
}
}
else
{
if (entityName.Contains("."))
{
return string.Join(".", entityName.Split('.').Select(it => GetTranslationText(it)));
}
else
{
return GetTranslationText(entityName);
}
}
}
public override bool IsTranslationText(string name)
{
return name.Contains("`") && name.Contains("`");
}
public override string GetTranslationText(string name)
{
return "`" + name + "`";
}
} }
public class MySqlMethod : DefaultDbMethod, IDbMethods public class MySqlMethod : DefaultDbMethod, IDbMethods
{ {