#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; //根据值按首字母
}
}
}