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
{