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