@@ -25,49 +25,55 @@ public sealed partial class MongoDbService
2525 {
2626 var findExpression = GetDefaultFindExpression ( filter ) ;
2727 var state = await _mongoDbContext . Find < TState > ( ) . Match ( findExpression ) . OneAsync ( id ) ;
28- state ? . LoadFromDbPostHandler ( false ) ;
29-
3028 var isNew = state == null ;
3129
3230 if ( state == null )
3331 {
34- state = new TState { Id = id , } ;
32+ state = new TState { Id = id , CreateTime = TimeHelper . TimeMilliseconds ( ) , } ;
3533 }
3634
3735 state . LoadFromDbPostHandler ( isNew ) ;
3836 return state ;
3937 }
4038
4139 /// <summary>
42- /// 异步查找满足指定条件的缓存状态列表。
40+ /// 异步查找满足指定条件的缓存状态。
41+ /// 当没有找到时,会创建一个
4342 /// </summary>
4443 /// <typeparam name="TState">缓存状态的类型。</typeparam>
4544 /// <param name="filter">查询条件。</param>
46- /// <returns>满足条件的缓存状态列表 。</returns>
47- public async Task < List < TState > > FindListAsync < TState > ( Expression < Func < TState , bool > > filter ) where TState : BaseCacheState
45+ /// <returns>满足条件的缓存状态 。</returns>
46+ public async Task < TState > FindAsync < TState > ( Expression < Func < TState , bool > > filter ) where TState : BaseCacheState , new ( )
4847 {
4948 var findExpression = GetDefaultFindExpression ( filter ) ;
50- var result = await _mongoDbContext . Queryable < TState > ( ) . Where ( findExpression ) . ToListAsync ( ) ;
51- foreach ( var state in result )
49+ var state = await _mongoDbContext . Queryable < TState > ( ) . Where ( findExpression ) . SingleOrDefaultAsync ( ) ;
50+ var isNew = state == null ;
51+
52+ if ( state == null )
5253 {
53- state ? . LoadFromDbPostHandler ( false ) ;
54+ state = new TState { Id = IdGenerator . GetNextUniqueId ( ) , CreateTime = TimeHelper . TimeMilliseconds ( ) , } ;
5455 }
5556
56- return result ;
57+ state . LoadFromDbPostHandler ( isNew ) ;
58+ return state ;
5759 }
5860
5961 /// <summary>
60- /// 异步查找满足指定条件的缓存状态 。
62+ /// 异步查找满足指定条件的缓存状态列表 。
6163 /// </summary>
6264 /// <typeparam name="TState">缓存状态的类型。</typeparam>
6365 /// <param name="filter">查询条件。</param>
64- /// <returns>满足条件的缓存状态 。</returns>
65- public async Task < TState > FindAsync < TState > ( Expression < Func < TState , bool > > filter ) where TState : BaseCacheState
66+ /// <returns>满足条件的缓存状态列表 。</returns>
67+ public async Task < List < TState > > FindListAsync < TState > ( Expression < Func < TState , bool > > filter ) where TState : BaseCacheState , new ( )
6668 {
6769 var findExpression = GetDefaultFindExpression ( filter ) ;
68- var state = await _mongoDbContext . Queryable < TState > ( ) . Where ( findExpression ) . SingleOrDefaultAsync ( ) ;
69- state ? . LoadFromDbPostHandler ( false ) ;
70- return state ;
70+ var result = await _mongoDbContext . Queryable < TState > ( ) . Where ( findExpression ) . ToListAsync ( ) ;
71+ foreach ( var state in result )
72+ {
73+ state ? . LoadFromDbPostHandler ( false ) ;
74+ }
75+
76+ return result ;
7177 }
7278
7379 /// <summary>
0 commit comments