diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index a3934fc7..cd3ca9e9 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -14,6 +14,7 @@ using Npgsql; using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.ComponentModel; using System.Data.Common; using System.Data.Odbc; 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") //.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") - //.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) + .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) //.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) @@ -600,7 +601,39 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion -var query2222 = fsql.Select() + fsql.Delete().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().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() + .SetSource(restrictions) + .UpdateColumns(r => new { + r.Describe, + r.IsLimitUsePoints, + r.Status, + r.StartTime, + r.EndTime, + r.UpdatedBy, + r.UpdatedTime + }) + .ExecuteAffrows(); + + + var query2222 = fsql.Select() .AsTable((t, o) => string.Format(o, "hash2")) .Where(p => p.Name.Contains("search")) .GroupBy(a => new { a.ClassId }) @@ -2193,4 +2226,100 @@ var sql11111 = fsql.Select() [Column(MapType = typeof(string))] public Achievement Group { get; set; } } + [Description("营销限制表")] + [Table(Name = "MarketingRestrictions")] + public class MarketingRestrictions + { + /// + /// 主键标识 + /// + [Description("主键标识")] + [Column(DbType = "uniqueidentifier", IsPrimary = true)] + public Guid Id { get; set; } + /// + /// 商户应用Id + /// + [Description("商户应用Id")] + [Column(DbType = "varchar(32) not null")] + public string MchtAppId { get; set; } + /// + /// 描述 + /// + [Description("描述")] + [Column(DbType = "nvarchar(500) not null")] + public string Describe { get; set; } + /// + /// 状态:0、关闭 1、启用 + /// + [Description("状态:0、关闭 1、启用")] + [Column(DbType = "smallint")] + public sbyte Status { get; set; } + /// + /// 是否限制使用积分:0、否 1、是 + /// + [Description("是否限制使用积分:0、否 1、是")] + [Column(DbType = "smallint")] + public sbyte IsLimitUsePoints { get; set; } + /// + /// 开始时间 + /// + [Description("开始时间")] + [Column(DbType = "datetime")] + public DateTime StartTime { get; set; } + /// + /// 结束时间 + /// + [Description("结束时间")] + [Column(DbType = "datetime")] + public DateTime EndTime { get; set; } + /// + /// 创建人Id + /// + [Description("创建人Id")] + [Column(DbType = "bigint")] + public long CreatedBy { get; set; } + /// + /// 创建时间 + /// + [Description("创建时间")] + [Column(DbType = "datetime", ServerTime = DateTimeKind.Local, CanUpdate = false)] + public DateTime CreatedTime { get; set; } + /// + /// 最后编辑人Id + /// + [Description("最后编辑人Id")] + [Column(DbType = "bigint")] + public long? UpdatedBy { get; set; } + /// + /// 最后编辑时间 + /// + [Description("最后编辑时间")] + [Column(DbType = "datetime")] + public DateTime? UpdatedTime { get; set; } + /// + /// 是否删除:0、否 1、是 + /// + [Description("是否删除:0、否 1、是")] + [Column(DbType = "smallint")] + public sbyte Deleted { get; set; } + /// + /// 删除人Id + /// + [Description("删除人Id")] + [Column(DbType = "bigint")] + public long? DeletedBy { get; set; } + /// + /// 删除时间 + /// + [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; } + } } diff --git a/Examples/base_entity/base_entity.xml b/Examples/base_entity/base_entity.xml index f7603c7f..31b00137 100644 --- a/Examples/base_entity/base_entity.xml +++ b/Examples/base_entity/base_entity.xml @@ -180,6 +180,76 @@ 更新时间 + + + 主键标识 + + + + + 商户应用Id + + + + + 描述 + + + + + 状态:0、关闭 1、启用 + + + + + 是否限制使用积分:0、否 1、是 + + + + + 开始时间 + + + + + 结束时间 + + + + + 创建人Id + + + + + 创建时间 + + + + + 最后编辑人Id + + + + + 最后编辑时间 + + + + + 是否删除:0、否 1、是 + + + + + 删除人Id + + + + + 删除时间 + + 角色表 diff --git a/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs b/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs index 3f7b4f6d..fc03a10c 100644 --- a/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs @@ -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("RAW")) + { + } + else if (sqlType.StartsWith("LONG RAW")) + { + } else if (char_used.ToLower() == "c") sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)"; else if (char_used.ToLower() == "b") diff --git a/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs b/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs index cc406cc5..0724ba61 100644 --- a/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs +++ b/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs @@ -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("RAW")) + { + } + else if (sqlType.StartsWith("LONG RAW")) + { + } else if (sqlType.StartsWith("TEXT")) { } diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs index 02c6b9b2..2de3d900 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs @@ -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("RAW")) + { + } + else if (sqlType.StartsWith("LONG RAW")) + { + } else if (sqlType == "REAL" || sqlType == "DOUBLE" || sqlType == "FLOAT") { } diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs index ad673448..0ce0c843 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs @@ -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("RAW")) + { + } + else if (sqlType.StartsWith("LONG RAW")) + { + } else if (char_used.ToLower() == "c") sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)"; else if (char_used.ToLower() == "b") diff --git a/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs b/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs index 68fc77d8..80f32817 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs @@ -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("RAW")) + { + } + else if (sqlType.StartsWith("LONG RAW")) + { + } else if (char_used.ToLower() == "c") sqlType += sqlType.StartsWith("N") ? $"({data_length / 2})" : $"({data_length / 4} CHAR)"; else if (char_used.ToLower() == "b") diff --git a/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs b/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs index 22dc1baa..98b7e57b 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs @@ -106,7 +106,7 @@ namespace FreeSql.Oracle return OleDbType.VarBinary; case "long raw": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["blob"]); - return OleDbType.VarBinary; + return OleDbType.LongVarBinary; case "binary_float": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["float(63)"]); return OleDbType.Single; diff --git a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs index 58d8e616..f0c2fcb8 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs @@ -51,6 +51,10 @@ namespace FreeSql.Oracle case OracleDbType.Blob: ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype2, Value = value }; break; + case OracleDbType.Raw: + case OracleDbType.LongRaw: + ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype2, Value = value }; + break; } } _params?.Add(ret); diff --git a/Providers/FreeSql.Provider.OracleOledb/OracleOledbUtils.cs b/Providers/FreeSql.Provider.OracleOledb/OracleOledbUtils.cs index 408cee75..575774d6 100644 --- a/Providers/FreeSql.Provider.OracleOledb/OracleOledbUtils.cs +++ b/Providers/FreeSql.Provider.OracleOledb/OracleOledbUtils.cs @@ -55,6 +55,10 @@ namespace FreeSql.Oracle if (col.DbPrecision != 0) ret.Precision = col.DbPrecision; if (col.DbScale != 0) ret.Scale = col.DbScale; break; + case OleDbType.VarBinary: + case OleDbType.LongVarBinary: + ret = new OleDbParameter { ParameterName = QuoteParamterName(parameterName), OleDbType = dbtype2, Value = value }; + break; } } _params?.Add(ret);