问题:方法没有完成执行(没有例外,http请求在pending
状态)。异步方法的Getter属性没有完成执行
我要实现一个界面:
public interface IQueryableUserStore<TUser, in TKey> : IUserStore<TUser, TKey>, IDisposable where TUser : class, IUser<TKey>
{
IQueryable<TUser> Users { get; }
}
我做了这样的:
public IQueryable<User> Users {
get { return (this._userRepository.GetAll().Result).AsQueryable(); }
}
下面是GetAll()
实现:
public async Task<IEnumerable<User>> GetAll() {
const string query = @"
select * from [dbo].[User]
";
return (await this._db.QueryAsync<User>(query, new {}));
}
编辑:我删除异步来自方法和方法调用的行为它的工作原理。但为什么它不适用于异步?
这工作:
public IQueryable<User> GetAll() {
const string query = @"
select * from [dbo].[User]
";
return this._db.Query<User>(query, new {}).AsQueryable();
}
我觉得你需要'await'以及从'get'返回。 –
@Amit Kumar Ghosh,有'GetAll()。Result',应该提供'await'行为,不是吗? – FSou1
'IQueryable'是'IEnumable '。 'IEnumerable'在你强制执行之前不会被评估。一些提示/解释在我的老问题上可以在这里:http://stackoverflow.com/questions/6677722/ienumerable-vs-iqueryable-for-business-logic-or-dal-return-types -
Smudge202