【发布时间】:2015-08-18 20:30:41
【问题描述】:
问题:方法没有完成执行(没有例外,http 请求处于pending 状态)。
我必须实现下一个接口:
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();
}
【问题讨论】:
-
我认为您从
get返回时也需要await。 -
@Amit Kumar Ghosh,有
GetAll().Result,应该提供await行为,不是吗? -
IQueryable<T>是IEnumable<T>。IEnumerable直到你强制他们评估才会被评估。关于我的一个老问题的一些提示/解释:stackoverflow.com/questions/6677722/… - -
@George Vovos,是的,看起来这不是连接问题,bcz 使用同步版本它就像一个魅力
-
你可能陷入了僵局。在 asp.net 和 winforms 中使用
.Result是不好的。见this
标签: c# asp.net .net asp.net-identity dapper