public void ShardTestSQLite2() { // 配置自动分表策略,一般在实体类静态构造函数中配置 var shard = new TimeShardPolicy("ID", Log2.Meta.Factory) { //Field = Log2._.ID, ConnPolicy = "{0}_{1:yyyy}", TablePolicy = "{0}_{1:yyyyMMdd}", }; Log2.Meta.ShardPolicy = shard; // 拦截Sql,仅为了断言,非业务代码 var sqls = new List <String>(); DAL.LocalFilter = s => sqls.Add(s); var time = DateTime.Now; var log = new Log2 { Action = "分表", Category = Rand.NextString(8), CreateTime = time, }; // 添删改查全部使用新表名 log.Insert(); Assert.StartsWith($"[test_{time:yyyy}] Insert Into Log2_{time:yyyyMMdd}(", sqls[^ 1]);
public void ShardTestSQLite() { // 配置自动分表策略,一般在实体类静态构造函数中配置 var shard = new TimeShardPolicy("RegisterTime", User2.Meta.Factory) { //Field = User2._.RegisterTime, TablePolicy = "{0}_{1:yyyyMM}", }; User2.Meta.ShardPolicy = shard; // 拦截Sql var sql = ""; DAL.LocalFilter = s => sql = s; var user = new User2 { Name = Rand.NextString(8), RegisterTime = new DateTime(2020, 8, 22), UpdateTime = new DateTime(2020, 9, 1), }; // 添删改查全部使用新表名 user.Insert(); Assert.StartsWith(@"[test] Insert Into User2_202008(", sql); user.DisplayName = Rand.NextString(16); user.Update(); Assert.StartsWith(@"[test] Update User2_202008 Set", sql); user.Delete(); Assert.StartsWith(@"[test] Delete From User2_202008 Where", sql); // 恢复现场,避免影响其它测试用例 User2.Meta.ShardPolicy = null; }