2016-11-27 26 views
1

我有一個簡單的gridview,我需要將其與用戶列表綁定。如何在EF 6.0中調用原始SQL查詢

在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; 
} 

任何人都可以請讓我知道,我在做什麼錯在這裏?

回答

1

使用此代碼:

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

謝謝。這一個工程。但如果我使用context.Database.SqlQuery(User.GetType(),「Select * from [User]」,new object [] {})。ToListAsync(),異步方法不起作用。我想知道爲什麼ToList()方法在這裏不可用,它強制用戶使用異步。 –

+0

'ToListAsync()'不起作用,或者執行需要很長時間? 關於這個方法有一個[topic](http://stackoverflow.com/questions/28543293/entity-framework-async-operation-takes-ten-times-as-long-to-complete) –