diff --git "a/XCode/Membership/\347\224\250\346\210\267.Biz.cs" "b/XCode/Membership/\347\224\250\346\210\267.Biz.cs" index e9db13d245..47ee18a391 100644 --- "a/XCode/Membership/\347\224\250\346\210\267.Biz.cs" +++ "b/XCode/Membership/\347\224\250\346\210\267.Biz.cs" @@ -51,6 +51,11 @@ static User() // 不过这不是理由,同一个线程遇到同一个锁不会堵塞 // 发生死锁的可能性是这里引发EnsureInit,而另一个线程提前引发EnsureInit拿到锁 Meta.Factory.AdditionalFields.Add(__.Logins); + + // 单对象缓存 + var sc = Meta.SingleCache; + sc.FindSlaveKeyMethod = k => Find(__.Name, k); + sc.GetSlaveKeyMethod = e => e.Name; } /// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 @@ -202,13 +207,10 @@ public static TEntity FindByID(Int32 id) { if (id <= 0) return null; - if (Meta.Count >= 1000) - return Find(__.ID, id); - else // 实体缓存 - return Meta.Cache.Find(e => e.ID == id); + if (Meta.Count < 1000) return Meta.Cache.Find(e => e.ID == id); // 实体缓存 - //return Meta.SingleCache[id]; + return Meta.SingleCache[id]; } /// 根据名称查找 @@ -218,10 +220,10 @@ public static TEntity FindByName(String name) { if (name.IsNullOrEmpty()) return null; - if (Meta.Count >= 1000) - return Find(__.Name, name); - else // 实体缓存 - return Meta.Cache.Find(e => e.Name.EqualIgnoreCase(name)); + if (Meta.Count < 1000) return Meta.Cache.Find(e => e.Name.EqualIgnoreCase(name)); + + // 单对象缓存 + return Meta.SingleCache.GetItemWithSlaveKey(name) as TEntity; } /// 根据邮箱地址查找 diff --git "a/XCode/Membership/\350\217\234\345\215\225.Biz.cs" "b/XCode/Membership/\350\217\234\345\215\225.Biz.cs" index 379ef90b6f..5375101de9 100644 --- "a/XCode/Membership/\350\217\234\345\215\225.Biz.cs" +++ "b/XCode/Membership/\350\217\234\345\215\225.Biz.cs" @@ -12,11 +12,6 @@ using NewLife.Reflection; using NewLife.Collections; using NewLife.Threading; -#if NET4 -using System.Threading.Tasks; -#else -using TaskEx = System.Threading.Tasks.Task; -#endif namespace XCode.Membership {