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

网站群建设接入指南推广赚钱项目

网站群建设接入指南,推广赚钱项目,网站开分站,网络营销买什么好一、自动分表(高版本可用) 特性写法 //假如是按月分表:[Table(Name "log_{yyyyMM}", AsTable "createtime2022-1-1(1 month)")]注意:①需包含log_202201这张表 ②递增规律是一个月一次,确保他们…

一、自动分表(高版本可用)

特性写法

    //假如是按月分表:[Table(Name = "log_{yyyyMM}", AsTable = "createtime=2022-1-1(1 month)")]注意:①需包含log_202201这张表 ②递增规律是一个月一次,确保他们存在。 ③确保有字段createtime。[Table(Name = "Teacher_{yyyy}", AsTable = "time=2023-1-1(1 year)")]public class Teacher{[Column(IsPrimary = true)]public int id { get; set; }public DateTime time { get; set; }}

 程序写法(附上生成的SQL):

static void Main(string[] args)
{//-----------------------01查全表---------------------------var list1 = freesql.Select<Teacher>().ToList();var sql = freesql.Select<Teacher>().ToSql();/*SELECT  * from (SELECT a.[id], a.[time] FROM [Teacher_2024] a) ftbUNION ALLSELECT  * from (SELECT a.[id], a.[time] FROM [Teacher_2023] a) ftb     *///-----------------------02跨时间查表---------------------------//var start = new DateTime(2023, 12, 31);//var end = new DateTime(2024, 1, 2);var sql2 = freesql.Select<Teacher>().Where(x => x.time.Between(DateTime.Parse("2023-12-31"), DateTime.Parse("2024-01-02")))//时间写法1//.Where(x => x.time.Between(start,end))//时间写法2//.Where(x => x.time>=start && x.time<=end)//时间写法3.ToSql();var list2 = freesql.Select<Teacher>().Where(x => x.time.Between(DateTime.Parse("2023-12-31"), DateTime.Parse("2024-01-02"))).ToList();/*SELECT  * from (SELECT a.[id], a.[time] FROM [Teacher_2024] a WHERE (a.[time] between '2023-12-31 00:00:00.000' and '2024-01-02 00:00:00.000')) ftbUNION ALLSELECT  * from (SELECT a.[id], a.[time] FROM [Teacher_2023] a WHERE (a.[time] between '2023-12-31 00:00:00.000' and '2024-01-02 00:00:00.000')) ftb*///-----------------------03不跨时间查表---------------------------var list3 = freesql.Select<Teacher>().Where(x => x.time.Between(DateTime.Parse("2024-1-1"), DateTime.Parse("2024-01-02"))).ToList();var sql3 = freesql.Select<Teacher>().Where(x => x.time.Between(DateTime.Parse("2024-1-1"), DateTime.Parse("2024-01-02"))).ToSql();/*SELECT a.[id], a.[time] FROM [Teacher_2024] a WHERE (a.[time] between '2024-01-01 00:00:00.000' and '2024-01-02 00:00:00.000')*/
}

 二、手动分表

1.静态映射类型(简单)

//01 配置分表表名 映射实体 查询框架
var tablenamelist = new List<string> { "Student_2023", "Student_2024" };
var unionSelect = fsql.Queryable<StudentAll>();
var querySelect1 = fsql.Queryable<StudentAll>();
var querySelect2 = fsql.Queryable<StudentAll>();//02 Union连接分表
foreach (var tableName in tablenamelist)
{bool isExistTable = fsql.DbFirst.GetTableByName(tableName) != null;if (isExistTable)//存在该表则union all{unionSelect.AsTable((type, oldname) => tableName);//不要在遍历循环内部这里用where筛选,因为遍历多少次,就会加上where多少次,sql效率低   }
}//03 编写sql条件
string cte = unionSelect.Where(x => x.Age.Equals(25))//这里不写cte,直接把where写到下面去也可以.ToSql();//所有分表都会加上这个条件//04 查表且映射到实体
var allList = querySelect1.WithSql(cte).ToList();//SELECT * FROM CTEvar pageList = querySelect2.WithSql(cte).Page(1, 20).Count(out var counts).ToList();//SELECT TOP 20 * FROM CTE

 cte处生成的sql是(下同):

SELECT * FROM Student_2023 WHERE Age = 25
UNION ALL
SELECT * FROM Student_2024 WHERE Age = 25

注意:三个select不能合并,否则会导致重复查询!(下同)

  • unionSelect 用于构建跨表的联合查询,并且没有执行查询。
  • querySelect1 用于获取符合条件的全部数据。
  • querySelect2 用于分页查询并获取指定页面的数据。

2.动态映射类型

        要注意,先筛查,后联表,因此需要加上where语句,小表union小表才更快!(而不是联合成大表后再筛选)


//01 配置分表表名 映射实体 查询框架
var tablenamelist = new List<string> { "Student_2023", "Student_2024" };
var entity = typeof(StudentAll);
var unionSelect = fsql.Queryable<object>();
var querySelect1 = fsql.Queryable<object>();
var querySelect2 = fsql.Queryable<object>();//02 Union连接分表
foreach (var tableName in tablenamelist)
{bool isExistTable = fsql.DbFirst.GetTableByName(tableName) != null;if (isExistTable)//存在该表则union all{unionSelect.AsType(entity).AsTable((type, oldname) => tableName);//不要在遍历循环内部这里用where筛选,因为遍历多少次,就会加上where多少次,sql效率低   }
}//03 编写sql条件
string cte = unionSelect.Where(x => (x as StudentAll).Age.Equals(25))//注意:此处的StudentAll必须是映射实体或其父类.ToSql();//所有分表都会加上这个条件//04 查表且映射到实体
var allList = querySelect1.AsType(entity).WithSql(cte).ToList().OfType<StudentAll>().ToList();//SELECT * FROM CTEvar pageList = querySelect2.AsType(entity).WithSql(cte).Page(1, 20).Count(out var counts).ToList().OfType<StudentAll>().ToList();//SELECT TOP 20 * FROM CTE

注意:以下两种写法输出结果是一致的

List<object> data1 = freesql.Select<object>().AsType(type).WithSql(sql).ToList();
ISelect<object> data2 = freesql.Select<object>().WithSql(sql);List<Student> result1 = data1.OfType<Student>().ToList();//两者输出是一致的
List<Student> result2 = data2.ToList<Student>();//两者输出是一致的

http://www.yayakq.cn/news/303877/

相关文章:

  • 厦门优化网站网站后台不能编辑
  • 平安网站建设公司在线教育oem平台
  • 介绍网站ppt该怎么做乌海市建设工程网站
  • 官方网站的优势中小企业网络拓扑
  • 网站建设及使用专注微信网站建设
  • 推荐一个简单的网站制作网站建设与管理的认识
  • 怎么用链接进自己做的网站吗威海做网站优化
  • 京市保障性住房建设投资中心网站手机网站设计方案
  • 网站建设上线建筑工程有限公司
  • 网站改版后的内容wordpress resize
  • 有支付功能网站用的编程语言潍坊市建设信息网
  • 网站定制合同做网站遇到竞争对手怎么办
  • 微信端怎么建设网站做公司网站的资料
  • 外包公司企业网站一键生成论文的网站
  • 静态网站如何入侵建工教育培训机构
  • 如何让新网站618网络营销策划方案
  • 视频宣传片免费模板seo软件工具箱
  • 中国万网怎么自己做网站佛山新网站建设特色
  • 直接进网站的浏览器打开网站建设全网推广小程序
  • 柳州企业网站制作哪家好做网站济南西
  • 特产网站怎么做刚入手一手房怎么网上做网站
  • 做动态图网站网站定制公司
  • 套餐型网站建设合同自己建设网站难不难
  • 网站推广排名收费用html是做班级简介网站
  • 网站开发实习过程找人做网页要多少钱
  • 宁波网站建设在线网页设计配色时可以用
  • 酒店网站案例万网官网首页
  • 网站icp备案怎么查询木蚂蚁网站正在建设中
  • 有没有做高仿的网站wordpress 怎么上传文件到根目录
  • 淘宝客做网站教程233建工网校官网