update CustomDataType case

This commit is contained in:
2881099
2023-06-13 13:18:15 +08:00
parent a3bfc49da3
commit d1be9ec629
13 changed files with 99 additions and 1 deletions

View File

@ -56,6 +56,7 @@ namespace FreeSql.Internal
{
case DataType.SqlServer:
case DataType.OdbcSqlServer:
case DataType.CustomSqlServer:
return dbField.EndsWith(dbNestedField, StringComparison.CurrentCultureIgnoreCase);
}
return dbField.EndsWith(dbNestedField);
@ -1081,6 +1082,7 @@ namespace FreeSql.Internal
{
case DataType.MySql:
case DataType.OdbcMySql:
case DataType.CustomMySql:
exp3CsValue = exp3CsValue.Replace("\\\\", "\\");
break;
}
@ -1286,6 +1288,7 @@ namespace FreeSql.Internal
{
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Dameng:
case DataType.OdbcDameng:
case DataType.GBase:
@ -1675,6 +1678,7 @@ namespace FreeSql.Internal
{
case DataType.MySql:
case DataType.OdbcMySql:
case DataType.CustomMySql:
case DataType.GBase:
if (exp3.Method.Name == "ToList")
return $"( SELECT * FROM ({sqlFirst.Replace(" \r\n", " \r\n ")}) ftblmt50 )";
@ -2654,6 +2658,7 @@ namespace FreeSql.Internal
{
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Dameng:
case DataType.OdbcDameng:
case DataType.GBase:
@ -2775,6 +2780,7 @@ namespace FreeSql.Internal
{
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Dameng:
case DataType.OdbcDameng:
case DataType.GBase:

View File

@ -110,6 +110,7 @@ namespace FreeSql.Internal.CommonProvider
{
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.GBase:
ExecuteNonQuery(null, null, CommandType.Text, " SELECT 1 FROM dual", commandTimeout);
return true;

View File

@ -25,6 +25,7 @@ namespace FreeSql.Internal.CommonProvider
{
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.GBase:
await ExecuteNonQueryAsync(null, null, CommandType.Text, " SELECT 1 FROM dual", commandTimeout, null, cancellationToken);
return true;

View File

@ -286,6 +286,7 @@ namespace FreeSql.Internal.CommonProvider
{
case DataType.OdbcOracle:
case DataType.Oracle:
case DataType.CustomOracle:
case DataType.OdbcDameng:
case DataType.Dameng:
case DataType.GBase:

View File

@ -723,6 +723,7 @@ namespace FreeSql.Internal.CommonProvider
{
case DataType.SqlServer:
case DataType.OdbcSqlServer:
case DataType.CustomSqlServer:
if (val?.Equals(DateTime.MinValue) == true) val = new DateTime(1970, 1, 1);
break;
}

View File

@ -736,6 +736,7 @@ namespace FreeSql.Internal.CommonProvider
case DataType.OdbcDameng: //达梦不能这样
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Firebird:
case DataType.GBase:
break;
@ -792,6 +793,7 @@ namespace FreeSql.Internal.CommonProvider
case DataType.OdbcDameng: //达梦不能这样
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Firebird:
case DataType.GBase:
break;
@ -826,6 +828,7 @@ namespace FreeSql.Internal.CommonProvider
case DataType.OdbcDameng: //达梦不能这样
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Firebird:
case DataType.GBase:
break;
@ -1208,20 +1211,24 @@ namespace FreeSql.Internal.CommonProvider
{
case DataType.MySql:
case DataType.OdbcMySql:
case DataType.CustomMySql:
_tosqlAppendContent = $"{_tosqlAppendContent} for update";
break;
case DataType.SqlServer:
case DataType.OdbcSqlServer:
case DataType.CustomSqlServer:
_aliasRule = (_, old) => $"{old} With(UpdLock, RowLock{(noawait ? ", NoWait" : "")})";
break;
case DataType.PostgreSQL:
case DataType.OdbcPostgreSQL:
case DataType.CustomPostgreSQL:
case DataType.KingbaseES:
case DataType.OdbcKingbaseES:
_tosqlAppendContent = $"{_tosqlAppendContent} for update{(noawait ? " nowait" : "")}";
break;
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Dameng:
case DataType.OdbcDameng:
_tosqlAppendContent = $"{_tosqlAppendContent} for update{(noawait ? " nowait" : "")}";

View File

@ -202,6 +202,7 @@ namespace FreeSql.Internal.CommonProvider
{
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.CustomOracle:
case DataType.Dameng:
case DataType.OdbcDameng: //Oracle、Dameng 分组时,嵌套分页
case DataType.GBase:

View File

@ -248,6 +248,7 @@ namespace FreeSql.Internal
{
case DataType.MySql:
case DataType.OdbcMySql: //处理毫秒
case DataType.CustomMySql:
var timeLength = 0;
var mTimeLength = Regex.Match(colattr.DbType, @"(DATETIME|TIMESTAMP)\s*\((\d+)\)");
if (mTimeLength.Success) timeLength = int.Parse(mTimeLength.Groups[2].Value);
@ -276,17 +277,20 @@ namespace FreeSql.Internal
{
case DataType.MySql:
case DataType.OdbcMySql:
case DataType.CustomMySql:
if (strlen == -2) colattr.DbType = $"LONGTEXT{strNotNull}";
else if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.SqlServer:
case DataType.OdbcSqlServer:
case DataType.CustomSqlServer:
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(MAX)");
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.PostgreSQL:
case DataType.OdbcPostgreSQL:
case DataType.CustomPostgreSQL:
case DataType.KingbaseES:
case DataType.OdbcKingbaseES:
case DataType.ShenTong:
@ -294,6 +298,7 @@ namespace FreeSql.Internal
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.Oracle:
case DataType.CustomOracle:
if (strlen < 0) colattr.DbType = $"NCLOB{strNotNull}"; //v1.3.2+ https://github.com/dotnetcore/FreeSql/issues/259
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
@ -337,23 +342,27 @@ namespace FreeSql.Internal
{
case DataType.MySql:
case DataType.OdbcMySql:
case DataType.CustomMySql:
if (strlen == -2) colattr.DbType = $"LONGBLOB{strNotNull}";
else if (strlen < 0) colattr.DbType = $"BLOB{strNotNull}";
else colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1({strlen})");
break;
case DataType.SqlServer:
case DataType.OdbcSqlServer:
case DataType.CustomSqlServer:
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1(MAX)");
else colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1({strlen})");
break;
case DataType.PostgreSQL:
case DataType.OdbcPostgreSQL:
case DataType.CustomPostgreSQL:
case DataType.KingbaseES:
case DataType.OdbcKingbaseES:
case DataType.ShenTong: //驱动引发的异常:“System.Data.OscarClient.OscarException”(位于 System.Data.OscarClient.dll 中)
colattr.DbType = $"BYTEA{strNotNull}"; //变长二进制串
break;
case DataType.Oracle:
case DataType.CustomOracle:
colattr.DbType = $"BLOB{strNotNull}";
break;
case DataType.Dameng:
@ -1667,6 +1676,7 @@ namespace FreeSql.Internal
if (dr.IsDBNull(index)) return null;
break;
case DataType.MySql:
case DataType.CustomMySql:
if (dr.GetFieldType(index).FullName == "MySqlConnector.MySqlDateTime")
{
if (dr.IsDBNull(index)) return null;