#region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2025 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:Mr.Wen's MacBook Pro * 命名空间:Sln.Iot.Repository.service.split * 唯一标识:2D1DE17A-79B9-48D8-BB98-60E89BEC711A * * 创建者:WenJY * 电子邮箱: * 创建时间:2025-04-27 10:10:14 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using System.Collections.Generic; using System.Linq; using System.Reflection; using SqlSugar; namespace Sln.Iot.Repository.service.split { /// /// 自定义分表策略:根据传感器 ID 进行分表 /// public class MonitorIdToSplitService:ISplitTableService { /// /// 返回数据库中所有分表 /// /// /// /// /// public List GetAllTables(ISqlSugarClient db, EntityInfo EntityInfo, List tableInfos) { List result = new List(); foreach (var item in tableInfos) { if (item.Name.Contains("record_iotenv_instant")) //区分标识如果不用正则符复杂一些,防止找错表 { SplitTableInfo data = new SplitTableInfo() { TableName = item.Name //要用item.name不要写错了 }; result.Add(data); } } return result.OrderBy(it=>it.TableName).ToList();//打断点看一下有没有查出所有分表 } /// /// 获取分表字段的值 /// /// /// /// /// /// public object GetFieldValue(ISqlSugarClient db, EntityInfo entityInfo, SplitType splitType, object entityValue) { var splitColumn = entityInfo.Columns.FirstOrDefault(it => it.PropertyInfo.GetCustomAttribute() != null); var value = splitColumn.PropertyInfo.GetValue(entityValue, null); return value; } /// /// 默认表名 /// /// /// /// public string GetTableName(ISqlSugarClient db, EntityInfo entityInfo) { return entityInfo.DbTableName; } public string GetTableName(ISqlSugarClient db, EntityInfo entityInfo, SplitType type) { return entityInfo.DbTableName;//目前模式少不需要分类(自带的有 日、周、月、季、年等进行区分) } public string GetTableName(ISqlSugarClient db, EntityInfo entityInfo, SplitType splitType, object fieldValue) { return entityInfo.DbTableName + "_"+fieldValue; //根据值按首字母 } } }