C# 默认情况下,ASP.net的SignalR是否异步执行Linq参数?

C# 默认情况下,ASP.net的SignalR是否异步执行Linq参数?,c#,entity-framework,signalr,signalr-hub,C#,Entity Framework,Signalr,Signalr Hub,我有一个signarhub,它返回实体框架调用的结果。在过去,你可以简单地写: public IQueryable<MyClass> GetStuff() { return MyContext.db.MyTable; } publicIQueryable GetStuff(){ 返回MyContext.db.MyTable; } 现在,当我们使用异步编程时,我倾向于在我的方法中具体化列表: public async Task<List<MyClass>>

我有一个signarhub,它返回实体框架调用的结果。在过去,你可以简单地写:

public IQueryable<MyClass> GetStuff() {
  return MyContext.db.MyTable;
}
publicIQueryable GetStuff(){
返回MyContext.db.MyTable;
}
现在,当我们使用异步编程时,我倾向于在我的方法中具体化列表:

public async Task<List<MyClass>> GetStuff() {
  return await MyContext.db.MyTable.ToListAsync();
}
公共异步任务GetStuff(){ 返回wait wait MyContext.db.MyTable.toListSync(); }
现在我想知道,这是否真的有必要,或者我是否可以用“旧”的方式来做,Signal更喜欢异步执行命令。

Signal不影响操作中的代码如何工作。集线器的方法和控制器的操作之间没有区别。在这两种情况下,
async/wait
用于在等待异步操作完成时释放请求线程。@PanagiotisKanavos我知道这一点,但当我将Linq查询(
IQueryable
)返回给SignalR时,必须有一些内部逻辑来具体化或读取数据,对吗?问题是,这个信号器内部的具体化是同步完成的,还是也使用异步方法。或者换句话说:第二个示例是否带来了任何好处,或者只是重新实现了signer的默认行为?这些库完全不同。LINQ甚至不执行查询,LINQ提供程序执行-EF、LINQtoobjects等。事实上,“旧”方式遇到了一些问题,不能像您认为的那样执行。执行查询的是对
IEnumerable
的隐式转换,就好像调用了
.AsEnumerable()
。事实上,
ToList()
只是对该可枚举项进行迭代,并将结果添加到list@PanagiotisKanavos或者,换句话说,我的第二种方法更可取?如果是这样,您是否建议最好拨打
.toListSync
.AsEnumerable