@@ -16,12 +16,14 @@ namespace GameFrameX.DataBase.Mongo;
1616public sealed partial class MongoDbService
1717{
1818 /// <summary>
19- /// 加载指定ID的缓存状态。
19+ /// 异步加载指定ID的缓存状态。
20+ /// 此方法尝试从MongoDB中查找与给定ID匹配的缓存状态。
21+ /// 如果找到状态,则返回该状态;如果未找到,则创建一个新的状态实例。
2022 /// </summary>
21- /// <typeparam name="TState">缓存状态的类型。</typeparam>
23+ /// <typeparam name="TState">缓存状态的类型,必须是BaseCacheState的子类,并具有无参数构造函数 。</typeparam>
2224 /// <param name="id">要加载的缓存状态的ID。</param>
23- /// <param name="filter">默认值获取器 。</param>
24- /// <returns>加载的缓存状态。</returns>
25+ /// <param name="filter">可选的过滤器,用于进一步限制查询结果的条件 。</param>
26+ /// <returns>加载的缓存状态,如果未找到则返回新创建的状态 。</returns>
2527 public async Task < TState > FindAsync < TState > ( long id , Expression < Func < TState , bool > > filter = null ) where TState : BaseCacheState , new ( )
2628 {
2729 var findExpression = GetDefaultFindExpression ( filter ) ;
@@ -30,20 +32,22 @@ public sealed partial class MongoDbService
3032
3133 if ( state == null )
3234 {
35+ // 如果未找到状态,则创建一个新的状态实例,并设置其ID和创建时间
3336 state = new TState { Id = id , CreateTime = TimeHelper . TimeMilliseconds ( ) , } ;
3437 }
3538
39+ // 调用后处理方法以加载状态的其他数据
3640 state . LoadFromDbPostHandler ( isNew ) ;
3741 return state ;
3842 }
3943
4044 /// <summary>
4145 /// 异步查找满足指定条件的缓存状态。
42- /// 当没有找到时,会创建一个
46+ /// 如果没有找到满足条件的状态,则会创建一个新的状态实例。
4347 /// </summary>
44- /// <typeparam name="TState">缓存状态的类型。</typeparam>
45- /// <param name="filter">查询条件。</param>
46- /// <returns>满足条件的缓存状态。</returns>
48+ /// <typeparam name="TState">缓存状态的类型,必须是BaseCacheState的子类,并具有无参数构造函数 。</typeparam>
49+ /// <param name="filter">查询条件,用于限制查找的结果 。</param>
50+ /// <returns>满足条件的缓存状态,如果未找到则返回新创建的状态 。</returns>
4751 public async Task < TState > FindAsync < TState > ( Expression < Func < TState , bool > > filter ) where TState : BaseCacheState , new ( )
4852 {
4953 var findExpression = GetDefaultFindExpression ( filter ) ;
@@ -52,13 +56,32 @@ public sealed partial class MongoDbService
5256
5357 if ( state == null )
5458 {
59+ // 如果未找到状态,则创建一个新的状态实例,并设置其ID和创建时间
5560 state = new TState { Id = IdGenerator . GetNextUniqueId ( ) , CreateTime = TimeHelper . TimeMilliseconds ( ) , } ;
5661 }
5762
63+ // 调用后处理方法以加载状态的其他数据
5864 state . LoadFromDbPostHandler ( isNew ) ;
5965 return state ;
6066 }
6167
68+ /// <summary>
69+ /// 异步加载指定ID的缓存状态。
70+ /// 此方法尝试从MongoDB中查找与给定ID匹配的缓存状态。
71+ /// 如果未找到状态,将返回null。
72+ /// </summary>
73+ /// <typeparam name="TState">缓存状态的类型,必须是BaseCacheState的子类,并具有无参数构造函数。</typeparam>
74+ /// <param name="id">要加载的缓存状态的唯一标识符。</param>
75+ /// <param name="filter">可选的过滤器,用于进一步限制查询结果的条件。</param>
76+ /// <returns>加载的缓存状态,如果未找到则返回null。</returns>
77+ private async Task < TState > InnerFindAsync < TState > ( long id , Expression < Func < TState , bool > > filter = null ) where TState : BaseCacheState , new ( )
78+ {
79+ var findExpression = GetDefaultFindExpression ( filter ) ;
80+ var state = await _mongoDbContext . Find < TState > ( ) . Match ( findExpression ) . OneAsync ( id ) ;
81+ return state ;
82+ }
83+
84+
6285 /// <summary>
6386 /// 异步查找满足指定条件的缓存状态列表。
6487 /// </summary>
0 commit comments