我有一个同步调用:
_context.User.Where((u) => (u.UserID == twitterId && u.Type == UserType.Show)).SingleOrDefault();
我需要包装成一个异步的,我可以等待使用await
关键字。
我怎样才能做到这一点?
谢谢。
我有一个同步调用:
_context.User.Where((u) => (u.UserID == twitterId && u.Type == UserType.Show)).SingleOrDefault();
我需要包装成一个异步的,我可以等待使用await
关键字。
我怎样才能做到这一点?
谢谢。
您需要使用Task.Run
方法包装您的同步调用。
var user = await Task.Run(() =>
_context.User
.Where(u => u.UserID == twitterId && u.Type == UserType.Show)
.SingleOrDefault());
请记住,6.0 版中的 EntityFramework 将具有异步接口,因此您不再需要使用此代码。
EF6 中添加的 QueryableExtensions 使这变得轻而易举:
await _context.User.SingleOrDefaultAsync(u =>
u.UserID == twitterId
&& u.Type == UserType.Show);
不要忘记System.Data.Entity
在 EntityFramework.dll中引用