当前位置: 首页 > 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.jsqmd.com/news/38721/

相关文章:

  • 20251112
  • 能耗在线监测体系:革新能源管理模式,助推企业节能减排
  • SAP SQL 加法不生效问题
  • 2025/11/14
  • 一份用pyhon生成word/wps蓝墨云班题库的代码
  • 公开仓库中的哈希值暴露安全风险分析
  • Kibana基本命令操作
  • linux版本微信打开关闭快捷键
  • Linux shell映射表(变量的变量)
  • 详细介绍:显卡算力过高导致PyTorch不兼容的救赎指南
  • 2025/11/13
  • Linux《网络基础》 - 教程
  • 《程序员修炼之道》阅读笔记4
  • 记一次 .NET 某医联体管理系统 崩溃分析
  • 如何构建可信智能 Data Agent?推荐 Aloudata Agent 分析决策智能体
  • #题解#牛客:牛牛的构造#DP#构造#
  • Machine Learning - SVM Part 2: The Radial Kernel
  • 2025-11-12 ZYZ28-NOIP-aoao round 2 hetao1733837的record
  • 2025/11/12
  • redis stream介绍
  • Java 线性表、栈、队列和优先队列
  • 2025/11/11
  • 植物大战僵尸修改器下载教程:图文详解与实用技巧
  • 微服务——注册中心
  • 【深度学习计算机视觉】13:实战Kaggle比赛:图像分类 (CIFAR-10) - 指南
  • fabricjs 整合 vue3-sketch-ruler 实现标尺功能
  • 2025年真空耙式干燥机定做厂家权威推荐榜单:真空单锥螺带干燥机/沸腾床干燥机/闪蒸干燥机源头厂家精选
  • 基础查找算法(三)二分查找
  • 2025年软像套电缆订做厂家权威推荐榜单:补偿电缆/矿物质电缆/电力电缆源头厂家精选
  • 2025年济南统招专升本学校权威推荐榜单:专升本机构报名/全日制专升本/专升本考试培训学校精选