@@ -51,45 +51,39 @@ public virtual Task<TUser> FindByNameAsync(string userName)
51
51
return this . GetUserAggregateAsync ( ( TUser u ) => u . UserName . ToUpper ( ) == userName . ToUpper ( ) ) ;
52
52
}
53
53
54
- public virtual Task CreateAsync ( TUser user )
54
+ public virtual async Task CreateAsync ( TUser user )
55
55
{
56
56
this . ThrowIfDisposed ( ) ;
57
57
if ( ( object ) user == null )
58
58
{
59
59
throw new ArgumentNullException ( "user" ) ;
60
60
}
61
61
62
- Context . Save ( user ) ;
63
- Context . Flush ( ) ;
64
-
65
- return Task . FromResult ( 0 ) ;
62
+ await Context . SaveAsync ( user ) ;
63
+ await Context . FlushAsync ( ) ;
66
64
}
67
65
68
- public virtual Task DeleteAsync ( TUser user )
66
+ public virtual async Task DeleteAsync ( TUser user )
69
67
{
70
68
if ( ( object ) user == null )
71
69
{
72
70
throw new ArgumentNullException ( "user" ) ;
73
71
}
74
72
75
- this . Context . Delete ( user ) ;
76
- Context . Flush ( ) ;
77
-
78
- return Task . FromResult ( 0 ) ;
73
+ await Context . DeleteAsync ( user ) ;
74
+ await Context . FlushAsync ( ) ;
79
75
}
80
76
81
- public virtual Task UpdateAsync ( TUser user )
77
+ public virtual async Task UpdateAsync ( TUser user )
82
78
{
83
79
this . ThrowIfDisposed ( ) ;
84
80
if ( ( object ) user == null )
85
81
{
86
82
throw new ArgumentNullException ( "user" ) ;
87
83
}
88
84
89
- this . Context . Update ( user ) ;
90
- Context . Flush ( ) ;
91
-
92
- return Task . FromResult ( 0 ) ;
85
+ await Context . UpdateAsync ( user ) ;
86
+ await Context . FlushAsync ( ) ;
93
87
}
94
88
95
89
private void ThrowIfDisposed ( )
@@ -129,7 +123,7 @@ from l in u.Logins
129
123
where l . LoginProvider == login . LoginProvider && l . ProviderKey == login . ProviderKey
130
124
select u ;
131
125
132
- return Task . FromResult ( query . SingleOrDefault ( ) ) ;
126
+ return query . SingleOrDefaultAsync ( ) ;
133
127
}
134
128
135
129
public virtual Task AddLoginAsync ( TUser user , UserLoginInfo login )
@@ -150,11 +144,10 @@ public virtual Task AddLoginAsync(TUser user, UserLoginInfo login)
150
144
LoginProvider = login . LoginProvider
151
145
} ) ;
152
146
153
- this . Context . SaveOrUpdate ( user ) ;
154
- return Task . FromResult < int > ( 0 ) ;
147
+ return Context . SaveOrUpdateAsync ( user ) ;
155
148
}
156
149
157
- public virtual Task RemoveLoginAsync ( TUser user , UserLoginInfo login )
150
+ public virtual async Task RemoveLoginAsync ( TUser user , UserLoginInfo login )
158
151
{
159
152
this . ThrowIfDisposed ( ) ;
160
153
if ( ( object ) user == null )
@@ -170,44 +163,34 @@ public virtual Task RemoveLoginAsync(TUser user, UserLoginInfo login)
170
163
if ( info != null )
171
164
{
172
165
user . Logins . Remove ( info ) ;
173
- this . Context . Update ( user ) ;
166
+ await Context . UpdateAsync ( user ) ;
174
167
}
175
-
176
- return Task . FromResult < int > ( 0 ) ;
177
168
}
178
169
179
- public virtual Task < IList < UserLoginInfo > > GetLoginsAsync ( TUser user )
170
+ public virtual async Task < IList < UserLoginInfo > > GetLoginsAsync ( TUser user )
180
171
{
181
172
this . ThrowIfDisposed ( ) ;
182
173
if ( ( object ) user == null )
183
174
{
184
175
throw new ArgumentNullException ( "user" ) ;
185
176
}
186
-
187
- IList < UserLoginInfo > result = new List < UserLoginInfo > ( ) ;
188
- foreach ( IdentityUserLogin identityUserLogin in ( IEnumerable < IdentityUserLogin > ) user . Logins )
189
- {
190
- result . Add ( new UserLoginInfo ( identityUserLogin . LoginProvider , identityUserLogin . ProviderKey ) ) ;
191
- }
192
-
193
- return Task . FromResult < IList < UserLoginInfo > > ( result ) ;
177
+
178
+ return ( await user . Logins . AsQueryable ( ) . ToListAsync ( ) )
179
+ . Select ( identityUserLogin => new UserLoginInfo ( identityUserLogin . LoginProvider , identityUserLogin . ProviderKey ) )
180
+ . ToList ( ) ;
194
181
}
195
182
196
- public virtual Task < IList < Claim > > GetClaimsAsync ( TUser user )
183
+ public virtual async Task < IList < Claim > > GetClaimsAsync ( TUser user )
197
184
{
198
185
this . ThrowIfDisposed ( ) ;
199
186
if ( ( object ) user == null )
200
187
{
201
188
throw new ArgumentNullException ( "user" ) ;
202
189
}
203
190
204
- IList < Claim > result = new List < Claim > ( ) ;
205
- foreach ( IdentityUserClaim identityUserClaim in ( IEnumerable < IdentityUserClaim > ) user . Claims )
206
- {
207
- result . Add ( new Claim ( identityUserClaim . ClaimType , identityUserClaim . ClaimValue ) ) ;
208
- }
209
-
210
- return Task . FromResult < IList < Claim > > ( result ) ;
191
+ return ( await user . Claims . AsQueryable ( ) . ToListAsync ( ) )
192
+ . Select ( identityUserClaim => new Claim ( identityUserClaim . ClaimType , identityUserClaim . ClaimValue ) )
193
+ . ToList ( ) ;
211
194
}
212
195
213
196
public virtual Task AddClaimAsync ( TUser user , Claim claim )
@@ -604,15 +587,12 @@ public virtual Task SetTwoFactorEnabledAsync(TUser user, bool enabled)
604
587
605
588
private Task < TUser > GetUserAggregateAsync ( Expression < Func < TUser , bool > > filter )
606
589
{
607
- return Task . Run ( ( ) =>
608
- {
609
- // no cartesian product, batch call. Don't know if it's really needed: should we eager load or let lazy loading do its stuff?
610
- var query = this . Context . Query < TUser > ( ) . Where ( filter ) ;
611
- query . Fetch ( p => p . Roles ) . ToFuture ( ) ;
612
- query . Fetch ( p => p . Claims ) . ToFuture ( ) ;
613
- query . Fetch ( p => p . Logins ) . ToFuture ( ) ;
614
- return query . ToFuture ( ) . FirstOrDefault ( ) ;
615
- } ) ;
590
+ // no cartesian product, batch call. Don't know if it's really needed: should we eager load or let lazy loading do its stuff?
591
+ var query = this . Context . Query < TUser > ( ) . Where ( filter ) ;
592
+ query . Fetch ( p => p . Roles ) . ToFuture ( ) ;
593
+ query . Fetch ( p => p . Claims ) . ToFuture ( ) ;
594
+ query . Fetch ( p => p . Logins ) . ToFuture ( ) ;
595
+ return query . ToFutureValue ( ) . GetValueAsync ( ) ;
616
596
}
617
597
}
618
598
}
0 commit comments