mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-20 04:48:16 +08:00
suppourt ndty orm
This commit is contained in:
@ -1011,6 +1011,7 @@ namespace FreeSql.Internal
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.Dameng:
|
||||
case DataType.OdbcDameng:
|
||||
case DataType.GBase:
|
||||
break;
|
||||
default:
|
||||
fsqlSelect0._limit = 1; //#462 ORACLE rownum <= 2 会影响索引变慢
|
||||
@ -1305,6 +1306,7 @@ namespace FreeSql.Internal
|
||||
{
|
||||
case DataType.MySql:
|
||||
case DataType.OdbcMySql:
|
||||
case DataType.GBase:
|
||||
if (exp3.Method.Name == "ToList")
|
||||
return $"( SELECT * FROM ({sqlFirst.Replace(" \r\n", " \r\n ")}) ftblmt50 )";
|
||||
break;
|
||||
@ -1877,6 +1879,7 @@ namespace FreeSql.Internal
|
||||
{
|
||||
if (obj == null) return "NULL";
|
||||
var paramName = $"exp_{dbParams.Count}";
|
||||
if (_common._orm?.Ado.DataType == DataType.GBase) paramName = "?";
|
||||
var parm = _common.AppendParamter(dbParams, paramName, mapColumn,
|
||||
mapType ?? mapColumn?.Attribute.MapType ?? obj?.GetType(), mapType == null ? obj : Utils.GetDataReaderValue(mapType, obj));
|
||||
return _common.QuoteParamterName(paramName);
|
||||
|
@ -111,6 +111,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.GBase:
|
||||
ExecuteNonQuery(null, null, CommandType.Text, " SELECT 1 FROM dual", commandTimeout);
|
||||
return true;
|
||||
case DataType.Firebird:
|
||||
|
@ -25,6 +25,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.GBase:
|
||||
await ExecuteNonQueryAsync(null, null, CommandType.Text, " SELECT 1 FROM dual", commandTimeout, null, cancellationToken);
|
||||
return true;
|
||||
case DataType.Firebird:
|
||||
@ -476,7 +477,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
public Task ExecuteReaderAsync(Func<FetchCallbackArgs<DbDataReader>, Task> fetchHandler, CommandType cmdType, string cmdText, DbParameter[] cmdParms, CancellationToken cancellationToken = default) => ExecuteReaderAsync(null, null, fetchHandler, cmdType, cmdText, 0, cmdParms, cancellationToken);
|
||||
public Task ExecuteReaderAsync(DbTransaction transaction, Func<FetchCallbackArgs<DbDataReader>, Task> fetchHandler, CommandType cmdType, string cmdText, DbParameter[] cmdParms, CancellationToken cancellationToken = default) => ExecuteReaderAsync(null, transaction, fetchHandler, cmdType, cmdText, 0, cmdParms, cancellationToken);
|
||||
public Task ExecuteReaderAsync(DbConnection connection, DbTransaction transaction, Func<FetchCallbackArgs<DbDataReader>, Task> fetchHandler, CommandType cmdType, string cmdText, int cmdTimeout, DbParameter[] cmdParms, CancellationToken cancellationToken = default) => ExecuteReaderMultipleAsync(1, connection, transaction, (fetch, result) => fetchHandler(fetch), null, cmdType, cmdText, cmdTimeout, cmdParms, cancellationToken);
|
||||
public async Task ExecuteReaderMultipleAsync(int multipleResult, DbConnection connection, DbTransaction transaction, Func<FetchCallbackArgs<DbDataReader>, int, Task> fetchHandler, Action<DbDataReader, int> schemaHandler, CommandType cmdType, string cmdText, int cmdTimeout, DbParameter[] cmdParms, CancellationToken cancellationToken = default)
|
||||
async public Task ExecuteReaderMultipleAsync(int multipleResult, DbConnection connection, DbTransaction transaction, Func<FetchCallbackArgs<DbDataReader>, int, Task> fetchHandler, Action<DbDataReader, int> schemaHandler, CommandType cmdType, string cmdText, int cmdTimeout, DbParameter[] cmdParms, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (string.IsNullOrEmpty(cmdText)) return;
|
||||
var dt = DateTime.Now;
|
||||
|
@ -182,6 +182,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcDameng:
|
||||
case DataType.Dameng:
|
||||
case DataType.GBase:
|
||||
sb.Append(" FROM dual");
|
||||
break;
|
||||
case DataType.Firebird:
|
||||
|
@ -352,6 +352,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.Firebird:
|
||||
case DataType.GBase:
|
||||
break;
|
||||
default:
|
||||
_select = "SELECT ";
|
||||
@ -407,6 +408,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.Firebird:
|
||||
case DataType.GBase:
|
||||
break;
|
||||
default:
|
||||
var beforeSql = this._select;
|
||||
@ -440,6 +442,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.Firebird:
|
||||
case DataType.GBase:
|
||||
break;
|
||||
default:
|
||||
var beforeSql = this._select;
|
||||
@ -755,6 +758,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
break;
|
||||
case DataType.Sqlite:
|
||||
break;
|
||||
case DataType.GBase:
|
||||
case DataType.ShenTong: //神通测试中发现,不支持 nowait
|
||||
_tosqlAppendContent = $"{_tosqlAppendContent} for update";
|
||||
break;
|
||||
|
@ -159,6 +159,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.Dameng:
|
||||
case DataType.OdbcDameng: //Oracle、Dameng 分组时,嵌套分页
|
||||
case DataType.GBase:
|
||||
isNestedPageSql = true;
|
||||
break;
|
||||
default:
|
||||
|
@ -204,6 +204,36 @@ namespace FreeSql.Internal
|
||||
// else if (Math.Abs(dt.Subtract(DateTime.UtcNow).TotalSeconds) < 60)
|
||||
// col.DbDefaultValue = common.NowUtc;
|
||||
//}
|
||||
|
||||
if (common._orm.Ado.DataType == DataType.GBase)
|
||||
{
|
||||
if (colattr.IsIdentity == true)
|
||||
{
|
||||
var colType = col.CsType.NullableTypeOrThis();
|
||||
if (colType == typeof(int) || colType == typeof(uint))
|
||||
colattr.DbType = "SERIAL";
|
||||
else if (colType == typeof(long) || colType == typeof(ulong))
|
||||
colattr.DbType = "SERIAL8";
|
||||
}
|
||||
if (colattr.MapType.NullableTypeOrThis() == typeof(DateTime))
|
||||
{
|
||||
if (colattr._Precision == null)
|
||||
{
|
||||
colattr.DbType = "DATETIME YEAR TO FRACTION(3)";
|
||||
colattr.Precision = 3;
|
||||
col.DbPrecision = 3;
|
||||
}
|
||||
else if (colattr._Precision == 0)
|
||||
{
|
||||
colattr.DbType = "DATETIME YEAR TO SECOND";
|
||||
}
|
||||
else if (colattr._Precision > 0)
|
||||
{
|
||||
colattr.DbType = $"DATETIME YEAR TO FRACTION({colattr.Precision})";
|
||||
col.DbPrecision = (byte)colattr.Precision;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (colattr.ServerTime != DateTimeKind.Unspecified && new[] { typeof(DateTime), typeof(DateTimeOffset) }.Contains(colattr.MapType.NullableTypeOrThis()))
|
||||
{
|
||||
var commonNow = common.Now;
|
||||
@ -283,6 +313,10 @@ namespace FreeSql.Internal
|
||||
if (strlen < 0) colattr.DbType = "BLOB SUB_TYPE 1";
|
||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
||||
break;
|
||||
case DataType.GBase:
|
||||
if (strlen < 0) colattr.DbType = "TEXT";
|
||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (colattr.MapType == typeof(byte[]) && colattr.IsVersion == true) colattr.StringLength = 16;
|
||||
@ -330,6 +364,9 @@ namespace FreeSql.Internal
|
||||
case DataType.Firebird:
|
||||
colattr.DbType = "BLOB";
|
||||
break;
|
||||
case DataType.GBase:
|
||||
colattr.DbType = "BYTE";
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (colattr.MapType.NullableTypeOrThis() == typeof(decimal) && (colattr.Precision > 0 || colattr.Scale > 0))
|
||||
@ -1352,6 +1389,7 @@ namespace FreeSql.Internal
|
||||
switch (orm.Ado.DataType)
|
||||
{
|
||||
case DataType.Dameng: //OdbcDameng 不会报错
|
||||
case DataType.GBase:
|
||||
if (dr.IsDBNull(index)) return null;
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user