public void TestSlave() { var cache = new SingleEntityCache <Int32, User> { Expire = 1 }; cache.FindSlaveKeyMethod = k => User.Find(User._.Name == k); cache.GetSlaveKeyMethod = e => e.Name; // 首次访问 var user = cache.GetItemWithSlaveKey("admin"); Assert.Equal(0, cache.Success); // 再次访问 var user2 = cache.GetItemWithSlaveKey("admin"); Assert.Equal(1, cache.Success); Thread.Sleep(cache.Expire * 1000 + 10); // 再次访问 var user3 = cache.GetItemWithSlaveKey("admin"); Assert.Equal(2, cache.Success); }
public void TestKey() { var cache = new SingleEntityCache <Int32, User> { Expire = 1 }; // 首次访问 XTrace.WriteLine("首次访问"); var user = cache[1]; Assert.Equal(0, cache.Success); // 再次访问 XTrace.WriteLine("再次访问"); var user2 = cache[1]; Assert.Equal(1, cache.Success); Thread.Sleep(cache.Expire * 1000 + 10); // 三次访问 XTrace.WriteLine("三次访问"); var user3 = cache[1]; Assert.Equal(2, cache.Success); }
static Post() { _cache = new SingleEntityCache <Int32, Post>(); _cache.FindKeyMethod = id => { var list = FindAll(_.Tid == id & _.Layer == 0, null, null, 0, 1); return(list.Count > 0 ? list[0] : null); }; }
public void Test1() { var cache = new SingleEntityCache <Int32, User>(); Assert.Equal(10, cache.Expire); Assert.Equal(60, cache.ClearPeriod); Assert.Equal(10000, cache.MaxEntity); Assert.False(cache.Using); Assert.NotNull(cache.GetKeyMethod); Assert.NotNull(cache.FindKeyMethod); Assert.Equal(0, cache.Total); Assert.Equal(0, cache.Success); }
static Content() { // 用于引发基类的静态构造函数,所有层次的泛型实体类都应该有一个 var entity = new Content(); _cache = new SingleEntityCache <Int32, Content>() { FindKeyMethod = id => FindAll(_.InfoID == id, _.Version.Desc(), null, 0, 1).FirstOrDefault(), }; Meta.Modules.Add <UserModule>(); Meta.Modules.Add <TimeModule>(); Meta.Modules.Add <IPModule>(); }
private static void Test9() { var cache = new SingleEntityCache <Int32, User> { Expire = 1 }; // 首次访问 var user = cache[1]; XTrace.WriteLine("cache.Success={0}", cache.Success); user = cache[1]; XTrace.WriteLine("cache.Success={0}", cache.Success); user = cache[1]; XTrace.WriteLine("cache.Success={0}", cache.Success); EntityFactory.InitAll(); XTrace.WriteLine("TestRole"); var r0 = Role.FindByName("Stone"); r0?.Delete(); var r = new Role { Name = "Stone" }; r.Insert(); var r2 = Role.FindByName("Stone"); XTrace.WriteLine("FindByName: {0}", r2.ToJson()); r.Enable = true; r.Update(); var r3 = Role.Find(Role._.Name == "STONE"); XTrace.WriteLine("Find: {0}", r3.ToJson()); r.Delete(); var n = Role.FindCount(); XTrace.WriteLine("count={0}", n); }
static EntityContent() { // 用于引发基类的静态构造函数,所有层次的泛型实体类都应该有一个 TEntity entity = new TEntity(); EntityFactory.Register(typeof(TEntity), new ContentFactory <TEntity>()); _cache = new SingleEntityCache <int, TEntity>(); _cache.AllowNull = true; _cache.AutoSave = false; _cache.FindKeyMethod = id => { var list = FindAllByName(__.ParentID, id, _.Version.Desc(), 0, 1); return(list.Count > 0 ? list[0] : null); }; }