如何使用 EntityFrameworkCore 运行 Raw SQL 查询并将结果映射到 IEnumerable<T> 类型?

How to run the Raw SQL query using EntityFrameworkCore and map the result to the type IEnumerable<T>?

我是 EntityFramework 核心的新手。我正在将我们现有的 .net framework4.6.1 应用程序移动到 .net core 2。在 EntityFramework 6 中,我们能够 运行 原始 SQL 查询并且我们能够获得映射的值使用以下代码到类型 (T)。

public IEnumerable<T> ExecuteSQL<T>(string sql)
{
   return Context.Database.SqlQuery<T>(sql, new object[] { });
}

但是,EFcore 不支持这个。我想 运行 Raw SQL query 使用 EntityFrameworkCore 并且我应该能够将结果映射到 IEnumerable。 EFCore 中似乎不存在 SqlQuery。请帮助我找到实现该功能的替代方法。 .提前致谢。

注意:这里,T不会是DbSetClass.it将是一个 ViewModel,它具有来自多个表的字段组合。

根据 Entity framework 核心文档,您可以使用 Query().FromSql(sql) 方法。

public IEnumerable<T> ExecuteSQL<T>(string sql) where T : class
    {
        return context.Query<T>().FromSql(sql).ToList();
    }

更多详情Explained here