From e79860164d5d12e4f7df747f0e29503dff301cb7 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Thu, 18 May 2023 11:27:23 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=88=86=E8=A1=A8=20IUpdate/IDelete=20AsTable=20=E4=B8=8D?= =?UTF-8?q?=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 62 ++++++++++++ Examples/base_entity/base_entity.xml | 46 +++++++++ FreeSql.DbContext/FreeSql.DbContext.xml | 18 ---- FreeSql/FreeSql.xml | 98 ------------------- .../Internal/CommonProvider/DeleteProvider.cs | 8 +- .../Internal/CommonProvider/UpdateProvider.cs | 8 +- 6 files changed, 120 insertions(+), 120 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index cd3ca9e9..21e5ca4f 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -601,6 +601,10 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + var sqlastable1 = fsql.Select(101).AsTable((t, o) => "current_detail_230501").ToSql(); + var sqlastable2 = fsql.Update(101).AsTable("current_detail_230501").Set(t => t.StatuId, 1).ToSql(); + var sqlastable3 = fsql.Delete(101).AsTable("current_detail_230501").ToSql(); + 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(); @@ -2322,4 +2326,62 @@ var sql11111 = fsql.Select() [Column(DbType = "long raw")] public byte[] data { get; set; } } + + [Table(Name = "current_detail_{yyMM01}", AsTable = "recordDate=2022-12-01(1 month)", DisableSyncStructure = true)] + public class CurrentDetail + { + [Column(IsPrimary = true)] + public long Id { get; set; } + + public DateTime CreateTime { get; set; } = DateTime.Now; + + /// + /// 创建日期 + /// + public DateTime RecordDate { get; set; } + + /// + /// 创建小时 + /// + public int RecordHour { get; set; } + + /// + /// 根据当前分钟数规整到10分钟的倍数 + /// 例如 21分=>20分 + /// + public int RecordMinute { get; set; } + + + /// + /// 记录时间 + /// + public DateTime RecordTime { get; set; } + + /// + /// 设备Code + /// + public int DeviceCode { get; set; } + + /// + /// 控制器序列号 + /// + public string TerminalSequence { get; set; } + + /// + /// 平均值 + /// + public float AvgValue { get; set; } + + /// + /// 路数 + /// + public int RouteNum { get; set; } + + /// + /// 相类型 + /// + public int PhaseTypeId { get; set; } + + public int StatuId { get; set; } + } } diff --git a/Examples/base_entity/base_entity.xml b/Examples/base_entity/base_entity.xml index 31b00137..3c3ca2c9 100644 --- a/Examples/base_entity/base_entity.xml +++ b/Examples/base_entity/base_entity.xml @@ -250,6 +250,52 @@ 删除时间 + + + 创建日期 + + + + + 创建小时 + + + + + 根据当前分钟数规整到10分钟的倍数 + 例如 21分=>20分 + + + + + 记录时间 + + + + + 设备Code + + + + + 控制器序列号 + + + + + 平均值 + + + + + 路数 + + + + + 相类型 + + 角色表 diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 26522f10..594fbad3 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -733,15 +733,6 @@ - - - 根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类 - - - - - - 创建普通数据上下文档对象 @@ -800,14 +791,5 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 8cd7ad2d..5323d7da 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1073,82 +1073,6 @@ - - - 动态创建实体类型 - - - - - 配置Class - - 类名 - 类标记的特性[Table(Name = "xxx")] [Index(xxxx)] - - - - - 配置属性 - - 属性名称 - 属性类型 - 属性标记的特性-支持多个 - - - - - 配置属性 - - 属性名称 - 属性类型 - 该属性是否重写父类属性 - 属性标记的特性-支持多个 - - - - - 配置属性 - - 属性名称 - 属性类型 - 该属性是否重写父类属性 - 属性默认值 - 属性标记的特性-支持多个 - - - - - 配置父类 - - 父类类型 - - - - - Override属性 - - - - - - Emit动态创建出Class - Type - - - - - - 首字母小写 - - - - - - - 首字母大写 - - - - 获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 null @@ -5768,28 +5692,6 @@ 请使用 fsql.InsertDict(dict) 方法插入字典数据 - - - 动态构建Class Type - - - - - - 根据字典,创建 table 对应的实体对象 - - - - - - - - 根据实体对象,创建 table 对应的字典 - - - - - C#: that >= between && that <= and diff --git a/FreeSql/Internal/CommonProvider/DeleteProvider.cs b/FreeSql/Internal/CommonProvider/DeleteProvider.cs index 58bca8e8..52279892 100644 --- a/FreeSql/Internal/CommonProvider/DeleteProvider.cs +++ b/FreeSql/Internal/CommonProvider/DeleteProvider.cs @@ -196,8 +196,9 @@ namespace FreeSql.Internal.CommonProvider } var sb = new StringBuilder(); - if (_table.AsTableImpl != null) + if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true) { + var oldTableRule = _tableRule; var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils); foreach (var name in names) { @@ -206,6 +207,7 @@ namespace FreeSql.Internal.CommonProvider _interceptSql?.Invoke(sb); fetch(sb); } + _tableRule = oldTableRule; return; } @@ -229,8 +231,9 @@ namespace FreeSql.Internal.CommonProvider } var sb = new StringBuilder(); - if (_table.AsTableImpl != null) + if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true) { + var oldTableRule = _tableRule; var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils); foreach (var name in names) { @@ -239,6 +242,7 @@ namespace FreeSql.Internal.CommonProvider _interceptSql?.Invoke(sb); await fetchAsync(sb); } + _tableRule = oldTableRule; return; } diff --git a/FreeSql/Internal/CommonProvider/UpdateProvider.cs b/FreeSql/Internal/CommonProvider/UpdateProvider.cs index ddf65a6a..4593f830 100644 --- a/FreeSql/Internal/CommonProvider/UpdateProvider.cs +++ b/FreeSql/Internal/CommonProvider/UpdateProvider.cs @@ -1004,8 +1004,9 @@ namespace FreeSql.Internal.CommonProvider ToSqlWhere(newwhere); var sb = new StringBuilder(); - if (_table.AsTableImpl != null) + if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true) { + var oldTableRule = _tableRule; var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils); foreach (var name in names) { @@ -1013,6 +1014,7 @@ namespace FreeSql.Internal.CommonProvider ToSqlExtension110(sb.Clear(), true); fetch(sb); } + _tableRule = oldTableRule; return; } @@ -1036,8 +1038,9 @@ namespace FreeSql.Internal.CommonProvider ToSqlWhere(newwhere); var sb = new StringBuilder(); - if (_table.AsTableImpl != null) + if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true) { + var oldTableRule = _tableRule; var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils); foreach (var name in names) { @@ -1045,6 +1048,7 @@ namespace FreeSql.Internal.CommonProvider ToSqlExtension110(sb.Clear(), true); await fetchAsync(sb); } + _tableRule = oldTableRule; return; }