当前位置: 首页 > news >正文

FreeSql自动分表

一、依赖环境

并安装包FreeSql.Provider.Sqlite--根据不同的数据库选择

二、添加实体类

using FreeSql.DataAnnotations;
//自动分表策略:按照createtime字段每月创建一个分表,起始时间为5月(即默认创建               
topic_202405,topic_202406,topic_202407三张表)
[Table(Name = "topic_{yyyyMM}", AsTable="createtime=2024-5-1(1 month)")]public class Topic{[Column(IsIdentity = true, IsPrimary = true)]public int Id { get; set; }public int Clicks { get; set; }public string? Title { get; set; }public DateTime CreateTime { get; set; }  //根据此字段分表}

三、示例代码

当前日期:2024-07-19
static void Main(string[] args)
{
var fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, "Data Source=./local.db")
.UseAutoSyncStructure(true)
.Build();

//生成测试数据
for (int offset = -2; offset < 1; offset++)
{var datetime = DateTime.Now.AddMonths(offset);for (int i = 0; i < 10; i++){var item = new Topic { Title = $"测试-{datetime.Month}月", Clicks = 100 + i, CreateTime = datetime };var insert_row_count = fsql.Insert(item).ExecuteAffrows(); //自动根据CreateTime时间,插入相应月份分表Console.WriteLine(insert_row_count);}
}//查询所有分表数据
var item_list = fsql.Select<Topic>().ToList();
foreach (var i in item_list)
{Console.WriteLine($"{i.Id}\t{i.Title}\t{i.Clicks}\t{i.CreateTime}");
}//获取自动分表名称
var tablename = fsql.CodeFirst.GetTableByEntity(typeof(Topic)).AsTableImpl.GetTableNameByColumnValue(DateTime.Now.AddMonths(-1), true);  //获取上个月的表名//查询指定分表
var july_items = fsql.Select<Topic>().AsTable((type, oldname) => tablename).ToList();
foreach (var i in july_items)
{Console.WriteLine($"{i.Id}\t{i.Title}\t{i.Clicks}\t{i.CreateTime}");
}//更新指定表,主键等于3的行
var update_row_count = fsql.Update<Topic>(3).Set(x => new { Title = $"更新测试111" }) //更新具体字段.AsTable(tablename)   //不指定表,会更新所有分表主键(id)为3的记录.ExecuteAffrows();
Console.WriteLine(update_row_count);//删除指定表,主键等于3的行
var delete_row_count = fsql.Delete<Topic>(3).AsTable(tablename).ExecuteAffrows();
Console.WriteLine(delete_row_count);

}

http://www.zskr.cn/news/47780.html

相关文章:

  • SAP SQL 加法不生效问题
  • 2025-11-12 早报新闻
  • linux版本微信打开关闭快捷键
  • Linux《网络基础》 - 教程
  • 如何构建可信智能 Data Agent?推荐 Aloudata Agent 分析决策智能体
  • Machine Learning - SVM Part 2: The Radial Kernel
  • redis stream介绍
  • Java 线性表、栈、队列和优先队列
  • 2025/11/11
  • 植物大战僵尸修改器下载教程:图文详解与实用技巧
  • 微服务——注册中心
  • 2025年软像套电缆订做厂家权威推荐榜单:补偿电缆/矿物质电缆/电力电缆源头厂家精选
  • 一些水题
  • list对象 集合 和 String 互转
  • 西林瓶灌装加塞机:驻马店适用,低噪运行约65分贝
  • 详细介绍:考研408--组成原理--day1
  • 深入解析:海尔 Haier Master 智能家居网关安装 Home Assistant 实践指南
  • 【chrome】chrome浏览器OptGuideOnDeviceModel模型占用磁盘空间的解决方法!
  • 这样的算作“全栈技术”吗?
  • 商丘西林瓶灌装线:人员更替需再培训?费用明晰
  • vue3+ts实现页面滚动位置的保存及恢复
  • 昌都西林瓶粉末灌装机:远程可控,手机电脑轻松操作
  • 无监督学习驱动的遗留系统重构专业的方法论
  • 证书的格式转化
  • Oracle升级回退:10.2.0.4 crs升级到11.2.0.4 回退方案
  • MySql批量导入csv文件
  • win1125h2使用和优化技巧
  • rsync安装部署
  • 湘潭西林瓶灌装机:料位监测,智能提醒加料
  • 对比m3node 时序数据库和influx/tsdb/greptime/VictoriaMetrics