0
我想异步获取实体。我知道如何异步获取集合,但不是一个对象。这里是我得到一个集合的代码:在.net应用程序中SingleOrDefault异步
MoviesService.Container _proxy;
_proxy在构造函数中初始化。下面是其他代码:
private async void Button_Click(object sender, RoutedEventArgs e)
{
IQueryable<MoviesService.Title> query = _proxy.Titles;
var titles = await GetTitlesAsych(query);
DataServiceCollection<MoviesService.Title> collection = new DataServiceCollection<MoviesService.Title>();
collection.Load(titles);
this.DataContext = collection;
}
private Task<IEnumerable<MoviesService.Title>> GetTitlesAsych(IQueryable<MoviesService.Title> query)
{
DataServiceQuery<MoviesService.Title> dsQuery = (DataServiceQuery<MoviesService.Title>)(query);
return Task.Factory.FromAsync<IEnumerable<MoviesService.Title>>(dsQuery.BeginExecute, dsQuery.EndExecute, null);
}
我很困惑如何改变这个,所以它可以用来获得一个单一的实体。
我正在使用web api 2.
这是在客户端...但在我的网络api中,我的控制器都是asych方法...我在创建控制器时检查了使用asych方法。 – Kourosh
当然,您希望在服务器上使用异步方法,并使用单线程同步上下文。如果您的服务器只是访问数据库,则可以在不牺牲性能的情况下杀死所有与并发有关的问题。 – zmbq
@zmbq根本没有内部请求的并发性。异步实际上有可能引入它。此外,您的异步代码只能针对单个请求运行。如果只有一个内核被设计使用,任何应用程序都会表现得非常糟糕。这不是那样的。 – usr