在EF Core 6.0.6中执行原始SQL

7

我需要在已经通过EF Core 6.0.6连接的MS SQL中执行SQL命令。

我找到的第一件事是:在EF Core 2.1中在DbContext上执行原始SQL

所以我尝试了这个:

db.Database.Query<Question>("COMMAND");

但是它指出 DatabaseFacade 没有包含 Query<T>() 方法。这些也是一样的:

db.Query<Question>("COMMAND");

db.Database.ExecuteSqlCommand("COMMAND");

db.Database.SqlQuery("COMMAND");

db.Database.GetDbConnection();

简单解释:

  1. dbMicrosoft.AspNetCore.Identity.EntityFrameworkCore 包中的 IdentityDbContext 类继承而来的 ApplicationDbContext 类的实例。

  2. Question 是我的类,其实例存储在我数据库中的 Questions 表中。

那么我的主要问题是:是否有一种方式在 EF Core 6.0.6 中执行原始 SQL?

如果有任何相关材料或提示,我将非常感激。


创建存储过程并调用它。这是最好的选择。 - D A
你能分享更多的代码,以显示更多的上下文吗? - adrianMoskal
1个回答

10

你试过这个吗?

var questions = db.Questions.FromSqlRaw("SELECT * FROM Questions").ToList();

确保你在文件顶部使用using Microsoft.EntityFrameworkCore

如果你可以通过服务提供程序访问ApplicationDbContext,可以尝试这样做:

var context = serviceScope.ServiceProvider.GetService<ApplicationDbContext>();

context.Database.ExecuteSqlRaw("SQL");

DbSet<Question> 不包含 FromSqlRaw() 方法。也许我缺少某些包? - Vizel Leonid
在我的应用程序中,使用 Microsoft.EntityFrameworkCore 后,这个功能可以正常工作。 - adrianMoskal
2
非常感谢!当我下载了Microsoft.EntityFrameworkCore.Relational包后,它开始工作了! - Vizel Leonid
现在我尝试了一下不使用Microsoft.EntityFrameworkCore.Relational,结果也很好。猜想整个问题是因为我忘记在开头写using Microsoft.EntityFrameworkCore了。无论如何,非常感谢你的帮助! - Vizel Leonid
有没有一种方法可以返回自定义对象(例如:连接表的结果)? - Nicoara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接