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

标签 c# asp.net-core-2.0 entity-framework-core-2.1

我是 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 不支持这个。我想使用 EntityFrameworkCore 运行原始 SQL 查询,我应该能够将结果映射到 IEnumerable 中。 EFCore 中似乎没有 SqlQuery。请帮助我找到实现该功能的替代方法。 .提前致谢。

注意:在这里,T 不是DbSet 类。它是一个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

关于c# - 如何使用 EntityFrameworkCore 运行原始 SQL 查询并将结果映射到 IEnumerable<T> 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55658093/

相关文章:

c# - 在 C# 的 Dynamic Linq 中使用 "Contains"关键字查询数据

asp.net-core-2.0 - Mastransit - 发布与发送以及如何管理消息

asp.net-core - 在 netcore 2.0 Visual Studio 2017 中发布项目时不会复制 View

c# - 在 C# 中组合 BinaryExpression 和 Expression<Func<dynamic, bool>>

c# - 实现一个接口(interface)但具有不同的成员名称

C# 页面像 iPhone 一样滚动?

c# - ThreadPool 错过事件

c# - .NET Core 2.0 MVC odd 404 on controller methods only when deployed to IIS

c# - 设置查询结果对象的小数精度

c# - Entity Framework 核心 : Fail to update Entity with nested value objects