所以我正在编写教程here
基于此,我有以下代码:
namespace LoganMVC.Controllers
{
public class UsersController : AsyncController
{
//
// GET: /Users/
public async Task<ActionResult> Index()
{
UserModel u = new UserModel();
var users = await u.GetUsers();
return View(users);
}
}
}
namespace LoganMVC.Models
{
public class UserModel
{
public async Task<List<User>> GetUsers()
{
WebUser u = new WebUser();
List<User> users = await u.GetUsers();
return users;
}
}
}
namespace Logan.Web.Data
{
public class WebUser
{
WebDBContext db = new WebDBContext();
public async Task<List<User>> GetUsers()
{
var query = from u in db.Users
orderby u.Username
select u;
List<User> data = await query.Include(x => x.Role).ToListAsync();
return data;
// this returned when I had it synchronous
//return db.Users.Include(x => x.Role).ToList();
}
}
}
在每个public async Task<T>
函数上,函数名称带有下划线红色,并显示以下错误:
找不到'async'修饰符所需的所有类型。您是针对错误的框架版本,还是缺少对程序集的引用?
此外,在我使用.ToListAsync()
的地方,我收到此错误:
'System.Linq.IQueryable dos不包含'ToListAsync'的定义,并且没有可以找到接受类型'System.Link.IQueryable'的第一个参数的扩展方法'ToListAsync'(你是否缺少using指令或者装配参考?)
正如您所看到的,本文未涵盖使用指令或程序集引用的内容,因此我基本上只是添加了指令,因为VS允许我这样做。
任何人都可以清理我在这里缺少或不理解的东西吗?
提前致谢!
编辑
更新到.NET 4.5,现在,除了上面提到的错误之外,我还有一个:
错误2预定义类型'System.Runtime.CompilerServices.IAsyncStateMachine'未定义或导入D:\ Development \ Logan \ LoganWeb \ Logan.Web.Data \ CSC Logan.Web.Data
对此的一些帮助也将不胜感激。
答案 0 :(得分:1)
根据评论,您使用的.NET 4.0框架并不支持async/await
个关键字。
您可以将框架版本升级到4.5,也可以从nuget获取Microsoft.Bcl.Async包,将这些功能添加到.NET 4.0