8

我有一个同步调用:

_context.User.Where((u) => (u.UserID == twitterId && u.Type == UserType.Show)).SingleOrDefault();

我需要包装成一个异步的,我可以等待使用await关键字。

我怎样才能做到这一点?

谢谢。

4

2 回答 2

11

您需要使用Task.Run方法包装您的同步调用。

var user = await Task.Run(() => 
   _context.User
           .Where(u => u.UserID == twitterId && u.Type == UserType.Show)
           .SingleOrDefault());

请记住,6.0 版中的 EntityFramework 将具有异步接口,因此您不再需要使用此代码。

于 2013-08-02T18:03:40.517 回答
3

EF6 中添加的 QueryableExtensions 使这变得轻而易举:

await _context.User.SingleOrDefaultAsync(u => 
    u.UserID == twitterId 
    && u.Type == UserType.Show);

不要忘记System.Data.Entity在 EntityFramework.dll中引用

于 2014-04-04T20:50:22.570 回答