C# 如何在EF 6.0中调用原始SQL查询

C# 如何在EF 6.0中调用原始SQL查询,c#,entity-framework,async-await,C#,Entity Framework,Async Await,我有一个简单的gridview,需要与用户列表绑定 在EF.5.0中,我可以简单地编写 context.Users.Select(emp => new { Name = emp.FirstName, EmailId = emp.EmailId, UserId = emp.UserId }).ToList(); 但是,我在EF6.0中再也看不到.ToList()方法了 因此,我必须使用ToAsyncList()编写一个异步查询。然而,我不知道为什么下面的代码不能工作,系统会无休止地执行 p

我有一个简单的gridview,需要与用户列表绑定

在EF.5.0中,我可以简单地编写

context.Users.Select(emp => new { Name = emp.FirstName, EmailId = emp.EmailId, UserId = emp.UserId }).ToList();
但是,我在EF6.0中再也看不到
.ToList()
方法了

因此,我必须使用
ToAsyncList()
编写一个异步查询。然而,我不知道为什么下面的代码不能工作,系统会无休止地执行

protected void Page_Load(object sender, EventArgs e)
{
    var task = LoadData();
    task.Wait();
    GridView1.DataSource = task.Result;
    GridView1.DataBind();
}

private async Task<List<User>> LoadData()
{
    List<User> users = null;

    using (var context = new BlogEntities())
    {
        users = await context.Database.SqlQuery<User>("Select * from User", new object[] { }).ToListAsync();
    }

    return users;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
var task=LoadData();
task.Wait();
GridView1.DataSource=task.Result;
GridView1.DataBind();
}
专用异步任务LoadData()
{
列表用户=null;
使用(var context=new bloggentities())
{
users=wait context.Database.SqlQuery(“Select*from User”,new object[]{}).ToListAsync();
}
返回用户;
}
有人能告诉我我做错了什么吗?

使用以下代码:

var users = context.Users.SqlQuery("SELECT * FROM dbo.User").ToList(); 

谢谢这个有效。但是如果我使用context.Database.SqlQuery(User.GetType(),“Select*from[User]”,new object[]{}).ToListAsync(),异步方法将无法工作。我想知道为什么ToList()方法在这里不可用,它会强制用户使用async。
ToListSync()
不起作用或者需要很长时间才能执行?关于这种方法,有一个很好的解释