原始SQL查询和实体框架核心

Obi*_*bin 12 c# entity-framework-core asp.net-core-mvc asp.net-core

我将我的应用程序迁移到ASP.NET MVC Core和Entity Framework Core,我发现了问题.我有像这样的实体的原始SQL查询

var rawSQL = dbContext.Database.SqlQuery<SomeModel>("Raw SQL Query").ToList();
Run Code Online (Sandbox Code Playgroud)

但没有SqlQuery<T>context.Database.你有这个问题的解决方案吗?

ibe*_*dev 12

请确保添加,using Microsoft.Data.Entity; 因为您可以使用扩展方法.

var rawSQL = dbContext.SomeModels.FromSql("your SQL");
Run Code Online (Sandbox Code Playgroud)

更好的是,使用原始SQL(存在SQL注入攻击的风险),这种FromSql方法允许您使用参数化查询,如:

dbContext.SomeModels.FromSql("SELECT * FROM dbo.Blogs WHERE Name = @p0", blogName);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于 Entity Framework Core,我必须包含命名空间: using Microsoft.EntityFrameworkCore; (2认同)
  • 查询`DbContext`而不是'DeSet`怎么样?@iberodev (2认同)