- 修复 Oracle 插入 LONG RAW 类型的问题;

This commit is contained in:
2881099 2023-05-17 15:38:53 +08:00
parent 6adae602cf
commit 1d41088aff
10 changed files with 241 additions and 4 deletions

View File

@ -14,6 +14,7 @@ using Npgsql;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Common; using System.Data.Common;
using System.Data.Odbc; using System.Data.Odbc;
using System.Data.SqlClient; using System.Data.SqlClient;
@ -571,8 +572,8 @@ namespace base_entity
//.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2") //.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToLower) //.UseNameConvert(FreeSql.Internal.NameConvertType.ToLower)
//.UseConnectionString(FreeSql.DataType.Oracle, "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2") .UseConnectionString(FreeSql.DataType.Oracle, "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
//.UseConnectionString(FreeSql.DataType.Dameng, "server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=5;min pool size=1") //.UseConnectionString(FreeSql.DataType.Dameng, "server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=5;min pool size=1")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) //.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
@ -600,7 +601,39 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value); BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion #endregion
var query2222 = fsql.Select<Student2222>() fsql.Delete<OracleLongRaw1>().Where("1=1").ExecuteAffrows();
var longRawData = Encoding.UTF8.GetBytes(string.Join(",", Enumerable.Range(1, 2000).Select(a => "中国人")));
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(false).ExecuteAffrows();
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(true).ExecuteAffrows();
var longRaw1 = fsql.Select<OracleLongRaw1>().ToList();
MarketingRestrictions restrictions = new MarketingRestrictions();
if (restrictions.Id == Guid.Empty)
{
restrictions.CreatedBy = 100;
}
else
{
restrictions.UpdatedBy = 100;
restrictions.UpdatedTime = DateTime.Now;
}
int ret = fsql.InsertOrUpdate<MarketingRestrictions>()
.SetSource(restrictions)
.UpdateColumns(r => new {
r.Describe,
r.IsLimitUsePoints,
r.Status,
r.StartTime,
r.EndTime,
r.UpdatedBy,
r.UpdatedTime
})
.ExecuteAffrows();
var query2222 = fsql.Select<Student2222>()
.AsTable((t, o) => string.Format(o, "hash2")) .AsTable((t, o) => string.Format(o, "hash2"))
.Where(p => p.Name.Contains("search")) .Where(p => p.Name.Contains("search"))
.GroupBy(a => new { a.ClassId }) .GroupBy(a => new { a.ClassId })
@ -2193,4 +2226,100 @@ var sql11111 = fsql.Select<Class1111>()
[Column(MapType = typeof(string))] [Column(MapType = typeof(string))]
public Achievement Group { get; set; } public Achievement Group { get; set; }
} }
[Description("营销限制表")]
[Table(Name = "MarketingRestrictions")]
public class MarketingRestrictions
{
/// <summary>
/// 主键标识
/// </summary>
[Description("主键标识")]
[Column(DbType = "uniqueidentifier", IsPrimary = true)]
public Guid Id { get; set; }
/// <summary>
/// 商户应用Id
/// </summary>
[Description("商户应用Id")]
[Column(DbType = "varchar(32) not null")]
public string MchtAppId { get; set; }
/// <summary>
/// 描述
/// </summary>
[Description("描述")]
[Column(DbType = "nvarchar(500) not null")]
public string Describe { get; set; }
/// <summary>
/// 状态0、关闭 1、启用
/// </summary>
[Description("状态0、关闭 1、启用")]
[Column(DbType = "smallint")]
public sbyte Status { get; set; }
/// <summary>
/// 是否限制使用积分0、否 1、是
/// </summary>
[Description("是否限制使用积分0、否 1、是")]
[Column(DbType = "smallint")]
public sbyte IsLimitUsePoints { get; set; }
/// <summary>
/// 开始时间
/// </summary>
[Description("开始时间")]
[Column(DbType = "datetime")]
public DateTime StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
[Description("结束时间")]
[Column(DbType = "datetime")]
public DateTime EndTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
[Description("创建人Id")]
[Column(DbType = "bigint")]
public long CreatedBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Description("创建时间")]
[Column(DbType = "datetime", ServerTime = DateTimeKind.Local, CanUpdate = false)]
public DateTime CreatedTime { get; set; }
/// <summary>
/// 最后编辑人Id
/// </summary>
[Description("最后编辑人Id")]
[Column(DbType = "bigint")]
public long? UpdatedBy { get; set; }
/// <summary>
/// 最后编辑时间
/// </summary>
[Description("最后编辑时间")]
[Column(DbType = "datetime")]
public DateTime? UpdatedTime { get; set; }
/// <summary>
/// 是否删除0、否 1、是
/// </summary>
[Description("是否删除0、否 1、是")]
[Column(DbType = "smallint")]
public sbyte Deleted { get; set; }
/// <summary>
/// 删除人Id
/// </summary>
[Description("删除人Id")]
[Column(DbType = "bigint")]
public long? DeletedBy { get; set; }
/// <summary>
/// 删除时间
/// </summary>
[Description("删除时间")]
[Column(DbType = "datetime")]
public DateTime? DeletedTime { get; set; }
}
class OracleLongRaw1
{
public Guid id { get; set; }
[Column(DbType = "long raw")]
public byte[] data { get; set; }
}
} }

View File

@ -180,6 +180,76 @@
更新时间 更新时间
</summary> </summary>
</member> </member>
<member name="P:base_entity.MarketingRestrictions.Id">
<summary>
主键标识
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.MchtAppId">
<summary>
商户应用Id
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.Describe">
<summary>
描述
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.Status">
<summary>
状态0、关闭 1、启用
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.IsLimitUsePoints">
<summary>
是否限制使用积分0、否 1、是
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.StartTime">
<summary>
开始时间
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.EndTime">
<summary>
结束时间
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.CreatedBy">
<summary>
创建人Id
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.CreatedTime">
<summary>
创建时间
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.UpdatedBy">
<summary>
最后编辑人Id
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.UpdatedTime">
<summary>
最后编辑时间
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.Deleted">
<summary>
是否删除0、否 1、是
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.DeletedBy">
<summary>
删除人Id
</summary>
</member>
<member name="P:base_entity.MarketingRestrictions.DeletedTime">
<summary>
删除时间
</summary>
</member>
<member name="T:EMSServerModel.Model.Role"> <member name="T:EMSServerModel.Model.Role">
<summary> <summary>
角色表 角色表

View File

@ -463,6 +463,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
else if (sqlType.StartsWith("NCLOB")) else if (sqlType.StartsWith("NCLOB"))
{ {
} }
else if (sqlType.StartsWith("RAW"))
{
}
else if (sqlType.StartsWith("LONG RAW"))
{
}
else if (char_used.ToLower() == "c") else if (char_used.ToLower() == "c")
sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)"; sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)";
else if (char_used.ToLower() == "b") else if (char_used.ToLower() == "b")

View File

@ -466,6 +466,12 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
else if (sqlType.StartsWith("NCLOB")) else if (sqlType.StartsWith("NCLOB"))
{ {
} }
else if (sqlType.StartsWith("RAW"))
{
}
else if (sqlType.StartsWith("LONG RAW"))
{
}
else if (sqlType.StartsWith("TEXT")) else if (sqlType.StartsWith("TEXT"))
{ {
} }

View File

@ -461,6 +461,12 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
else if (sqlType.StartsWith("BLOB")) else if (sqlType.StartsWith("BLOB"))
{ {
} }
else if (sqlType.StartsWith("RAW"))
{
}
else if (sqlType.StartsWith("LONG RAW"))
{
}
else if (sqlType == "REAL" || sqlType == "DOUBLE" || sqlType == "FLOAT") else if (sqlType == "REAL" || sqlType == "DOUBLE" || sqlType == "FLOAT")
{ {
} }

View File

@ -465,6 +465,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
else if (sqlType.StartsWith("NCLOB")) else if (sqlType.StartsWith("NCLOB"))
{ {
} }
else if (sqlType.StartsWith("RAW"))
{
}
else if (sqlType.StartsWith("LONG RAW"))
{
}
else if (char_used.ToLower() == "c") else if (char_used.ToLower() == "c")
sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)"; sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)";
else if (char_used.ToLower() == "b") else if (char_used.ToLower() == "b")

View File

@ -500,6 +500,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
else if (sqlType.StartsWith("NCLOB")) else if (sqlType.StartsWith("NCLOB"))
{ {
} }
else if (sqlType.StartsWith("RAW"))
{
}
else if (sqlType.StartsWith("LONG RAW"))
{
}
else if (char_used.ToLower() == "c") else if (char_used.ToLower() == "c")
sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)"; sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)";
else if (char_used.ToLower() == "b") else if (char_used.ToLower() == "b")

View File

@ -106,7 +106,7 @@ namespace FreeSql.Oracle
return OleDbType.VarBinary; return OleDbType.VarBinary;
case "long raw": case "long raw":
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["blob"]); _dicDbToCs.TryAdd(dbfull, _dicDbToCs["blob"]);
return OleDbType.VarBinary; return OleDbType.LongVarBinary;
case "binary_float": case "binary_float":
_dicDbToCs.TryAdd(dbfull, _dicDbToCs["float(63)"]); _dicDbToCs.TryAdd(dbfull, _dicDbToCs["float(63)"]);
return OleDbType.Single; return OleDbType.Single;

View File

@ -51,6 +51,10 @@ namespace FreeSql.Oracle
case OracleDbType.Blob: case OracleDbType.Blob:
ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype2, Value = value }; ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype2, Value = value };
break; break;
case OracleDbType.Raw:
case OracleDbType.LongRaw:
ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype2, Value = value };
break;
} }
} }
_params?.Add(ret); _params?.Add(ret);

View File

@ -55,6 +55,10 @@ namespace FreeSql.Oracle
if (col.DbPrecision != 0) ret.Precision = col.DbPrecision; if (col.DbPrecision != 0) ret.Precision = col.DbPrecision;
if (col.DbScale != 0) ret.Scale = col.DbScale; if (col.DbScale != 0) ret.Scale = col.DbScale;
break; break;
case OleDbType.VarBinary:
case OleDbType.LongVarBinary:
ret = new OleDbParameter { ParameterName = QuoteParamterName(parameterName), OleDbType = dbtype2, Value = value };
break;
} }
} }
_params?.Add(ret); _params?.Add(ret);