当前位置: 首页 > 面试题库 >

在EF Core 2.1中的DbContext上执行RAW SQL

楚灿
2023-03-14
问题内容

我对此进行了研究,并始终找到这样的示例:

var blogs = context.Blogs
    .FromSql("SELECT * FROM dbo.Blogs")
    .ToList();

问题是,我不想在Blogs表上运行原始SQL。基本上,我想实现这样的接口:

bool ExecuteNonSafeSql(
    string connectionString,
    string sql);

有没有办法用DbContext做到这一点?


问题答案:

在撰写本文时(EF Core 2.1),尚无任何方法可以执行 返回 SQL命令的任意 安全性

只有实体类型和查询类型是通过支持FromSql

因此,最接近的解决方案是定义查询类型(保存查询结果的类)并使用FromSql,但这不是通用的-查询类型必须在DbContextvia fluent
API中注册,并且该方法应接收一个指定该类型的通用参数,例如

class ResultType
{
   // ...
}

然后

modelBuilder.Query<ResultType>();

最后

db.Query<ResultType>().FromSql(...)

请注意,该代码Database.ExecuteSqlCommand可以执行任意SQL,但不能用于返回序列(IEnumerable<T>IQueryable<T>)。



 类似资料:
  • 我有GridView,其中项目是带有图像(ImageView)和标题(TextView)的视图。我想在这个ImageView上执行onClick操作,但不是在整个GridView项上。如果我使用这个代码: 只有第二次单击ImageView才能进行操作。如何通过第一次单击GridView在ImageView上执行操作?

  • 问题内容: 我开始在Linux上进行pthread编程,而在最初的程序中,我完全感到困惑。下面是我正在运行的程序 我想知道的第一件事是线程执行的顺序不是顺序的? 第二件事是我故意放置print(“ amit”); 看到main确实在线程1终止期间停止了,但是在输出中我们看到的是首先执行了printf语句。整个过程的输出是 线程1 线程2 amitThread 1返回:0 线程2返回:0 问题答案:

  • 背景: 我在同一个解决方案中有一个Web API项目和一个类库项目,它们共享相同的模型类。两个项目共享同一个数据库,并且都使用DbContext来读/写数据。 Web API项目以典型的UnitOfWork模式设置,工作正常。 这个班级项目有点不同。我在构造函数中指定连接字符串,而不是在Web中指定。配置文件: 我使用WebAPI调用类库中定义的函数。当我试图使用类库查询数据库时,我得到一个错误。

  • 版本 Liquibase:3.6.2 Spring Boot:2.1.0.RELEASE MySQL / MariaDB: mysql Ver 15.1 Distrib 10.1.25-MariaDB,用于Win32(AMD64) H2:1.4.197 目标 我有一个迁移脚本,它将数据从两个表转换为一个。该脚本是用SQL编写的,并且工作正常(通过手动执行来验证)。此外,当使用H2数据库运行迁移时,

  • 我在Javascript中有以下示例,我似乎找不到Java中的等价物 我所拥有的(不会给出相同的结果)

  • 大家:我在找一个有更多知识的人来检查我对蜂巢和火花的理解 我一直在研究不同的大型数据库解决方案,并试图理解Hive和Spark在执行方面的差异。我尝试安装Hadoop、Hive和Spark,看看它们的性能如何。我能够让Hadoop和Spark工作。我无法让Hive去工作。