SqlSugar/Src/Asp.NetCore2/SqlSugar.TDengineCore/TDengine/TDengineProvider.cs

116 lines
3.9 KiB
C#
Raw Normal View History

2023-07-30 22:19:03 +08:00
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar.TDengineAdo;
namespace SqlSugar.TDengine
{
public partial class TDengineProvider : AdoProvider
{
public TDengineProvider()
{
}
public override IDbConnection Connection
{
get
{
if (base._DbConnection == null)
{
try
{
var TDengineConnectionString = base.Context.CurrentConnectionConfig.ConnectionString;
base._DbConnection = new TDengineConnection(TDengineConnectionString);
}
catch (Exception)
{
throw;
}
}
return base._DbConnection;
}
set
{
base._DbConnection = value;
}
}
public override void BeginTran(string transactionName)
{
}
/// <summary>
/// Only SqlServer
/// </summary>
/// <param name="iso"></param>
/// <param name="transactionName"></param>
public override void BeginTran(IsolationLevel iso, string transactionName)
{
}
public override IDataAdapter GetAdapter()
{
return new SqlSugar.TDengineCore.TDengineDataAdapter();
}
public override DbCommand GetCommand(string sql, SugarParameter[] parameters)
{
TDengineCommand sqlCommand = new TDengineCommand(sql, (TDengineConnection)this.Connection);
sqlCommand.CommandType = this.CommandType;
sqlCommand.CommandTimeout = this.CommandTimeOut;
//if (this.Transaction != null)
//{
// sqlCommand.Transaction = (TDengineTransaction)this.Transaction;
//}
if (parameters.HasValue())
{
IDataParameter[] ipars = ToIDbDataParameter(parameters);
sqlCommand.Parameters.AddRange((TDengineParameter[])ipars);
}
CheckConnection();
return sqlCommand;
}
public override void SetCommandToAdapter(IDataAdapter dataAdapter, DbCommand command)
{
2023-07-31 23:59:42 +08:00
((SqlSugar.TDengineCore.TDengineDataAdapter)dataAdapter).SelectCommand = (TDengineCommand)command;
2023-07-30 22:19:03 +08:00
}
/// <summary>
/// if mysql return MySqlParameter[] pars
/// if sqlerver return SqlParameter[] pars ...
/// </summary>
/// <param name="parameters"></param>
/// <returns></returns>
public override IDataParameter[] ToIDbDataParameter(params SugarParameter[] parameters)
{
if (parameters == null || parameters.Length == 0) return null;
TDengineParameter[] result = new TDengineParameter[parameters.Length];
int i = 0;
foreach (var parameter in parameters)
{
if (parameter.Value == null) parameter.Value = DBNull.Value;
2023-08-02 08:37:19 +08:00
if (parameter.Value is bool)
{
parameter.Value = parameter.Value?.ToString()?.ToLower();
}
2023-07-30 22:19:03 +08:00
var sqlParameter = new TDengineParameter(parameter.ParameterName,parameter.Value,parameter.DbType,0);
2023-08-26 03:21:31 +08:00
if (parameter.CustomDbType?.Equals(System.Data.DbType.DateTime2) == true)
{
sqlParameter.IsMicrosecond= true;
}
2023-09-07 16:47:32 +08:00
else if (parameter.CustomDbType?.Equals(typeof(Date19))==true)
{
sqlParameter.IsNanosecond = true;
}
2023-07-31 23:59:42 +08:00
result[i]=sqlParameter;
2023-07-30 22:19:03 +08:00
i++;
}
return result;
}
}
}