Пример #1
0
        public void FilterTable()
        {
            var db = Startup.ServiceProvider.GetService <IDbAccessor>();

            var          q    = db.GetIQueryable <Base_UnitTest>();
            ShardingRule rule = new ShardingRule
            {
                EntityType       = typeof(Base_UnitTest),
                ExpandByDateMode = ExpandByDateMode.PerMonth,
                ShardingField    = nameof(Base_UnitTest.CreateTime),
                ShardingType     = ShardingType.Date
            };
            List <string> tableSuffixs = new List <string>()
            {
                "202001", "202002", "202003"
            };
            DateTime      time0 = DateTime.Parse("2019-12-01");
            DateTime      time1 = DateTime.Parse("2020-01-01");
            DateTime      time2 = DateTime.Parse("2020-02-01");
            DateTime      time3 = DateTime.Parse("2020-03-01");
            DateTime      time4 = DateTime.Parse("2020-04-01");
            List <string> res;

            //=
            res = GetFilterTable(x => x.CreateTime == time1);
            Assert.AreEqual(res.ToJson(), _table1);

            res = GetFilterTable(x => x.CreateTime == time0);
            Assert.AreEqual(res.Count, 0);

            res = GetFilterTable(x => x.CreateTime == time4);
            Assert.AreEqual(res.Count, 0);
            //!=
            res = GetFilterTable(x => x.CreateTime != time1);
            Assert.AreEqual(res.ToJson(), _table23);

            res = GetFilterTable(x => x.CreateTime != time0);
            Assert.AreEqual(res.ToJson(), _table123);

            res = GetFilterTable(x => x.CreateTime != time4);
            Assert.AreEqual(res.ToJson(), _table123);
            //>
            res = GetFilterTable(x => x.CreateTime > time0);
            Assert.AreEqual(res.ToJson(), _table123);

            res = GetFilterTable(x => x.CreateTime > time2);
            Assert.AreEqual(res.ToJson(), _table23);

            res = GetFilterTable(x => x.CreateTime > time3);
            Assert.AreEqual(res.Count, 1);

            res = GetFilterTable(x => x.CreateTime > time4);
            Assert.AreEqual(res.Count, 0);
            //>=
            res = GetFilterTable(x => x.CreateTime > time0);
            Assert.AreEqual(res.ToJson(), _table123);

            res = GetFilterTable(x => x.CreateTime > time1);
            Assert.AreEqual(res.ToJson(), _table123);

            res = GetFilterTable(x => x.CreateTime > time2);
            Assert.AreEqual(res.ToJson(), _table23);

            res = GetFilterTable(x => x.CreateTime > time3);
            Assert.AreEqual(res.Count, 1);

            res = GetFilterTable(x => x.CreateTime > time4);
            Assert.AreEqual(res.Count, 0);
            //<
            res = GetFilterTable(x => x.CreateTime < time0);
            Assert.AreEqual(res.Count, 0);

            res = GetFilterTable(x => x.CreateTime < time1);
            Assert.AreEqual(res.ToJson(), _table1);

            res = GetFilterTable(x => x.CreateTime < time2);
            Assert.AreEqual(res.ToJson(), _table12);

            res = GetFilterTable(x => x.CreateTime < time3);
            Assert.AreEqual(res.ToJson(), _table123);

            res = GetFilterTable(x => x.CreateTime < time4);
            Assert.AreEqual(res.ToJson(), _table123);
            //<=
            res = GetFilterTable(x => x.CreateTime < time0);
            Assert.AreEqual(res.Count, 0);

            res = GetFilterTable(x => x.CreateTime < time1);
            Assert.AreEqual(res.ToJson(), _table1);

            res = GetFilterTable(x => x.CreateTime < time2);
            Assert.AreEqual(res.ToJson(), _table12);

            res = GetFilterTable(x => x.CreateTime < time3);
            Assert.AreEqual(res.ToJson(), _table123);

            res = GetFilterTable(x => x.CreateTime < time4);

            Assert.AreEqual(res.ToJson(), _table123); List <string> GetFilterTable(Expression <Func <Base_UnitTest, bool> > theWhere)
            {
                return(ShardingHelper.FilterTable(db.GetIQueryable <Base_UnitTest>().Where(theWhere), tableSuffixs, rule));
            }
        }
Пример #2
0
 private Type MapTable(Type absTable, string targetTableName)
 {
     return(ShardingHelper.MapTable(absTable, targetTableName));
 }