【问题标题】:How to call raw SQL queries in EF 6.0如何在 EF 6.0 中调用原始 SQL 查询
【发布时间】:2016-11-28 03:39:42
【问题描述】:

我有一个简单的网格视图,需要与用户列表绑定。

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

谁能告诉我,我在这里做错了什么?

【问题讨论】:

    标签: c# entity-framework async-await


    【解决方案1】:

    使用此代码:

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

    【讨论】:

    • 谢谢。这个有效。但是如果我使用 context.Database.SqlQuery(User.GetType(), "Select * from [User]", new object[] {}).ToListAsync(),异步方法不起作用。我想知道为什么 ToList() 方法在这里不可用,它迫使用户使用异步。
    • ToListAsync() 不起作用或执行需要很长时间?关于这个方法有一个topic
    猜你喜欢
    • 1970-01-01
    • 2018-06-02
    • 2014-12-10
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2021-02-11
    相关资源
    最近更新 更多