我将我的应用程序迁移到了ASP.NET MVC Core和Entity Framework Core,但是我遇到了问题。我有一条原始的SQL查询语句,像这样转换为实体:
var rawSQL = dbContext.Database.SqlQuery<SomeModel>("Raw SQL Query").ToList();
但是在context.Database
中没有SqlQuery<T>
。你有解决这个问题的方法吗?
我将我的应用程序迁移到了ASP.NET MVC Core和Entity Framework Core,但是我遇到了问题。我有一条原始的SQL查询语句,像这样转换为实体:
var rawSQL = dbContext.Database.SqlQuery<SomeModel>("Raw SQL Query").ToList();
但是在context.Database
中没有SqlQuery<T>
。你有解决这个问题的方法吗?
请确保添加using Microsoft.Data.Entity;
,因为有一个您可以使用的扩展方法。
var rawSQL = dbContext.SomeModels.FromSql("your SQL");
更好的是,与其使用原始的SQL(存在SQL注入攻击的风险),这个FromSql方法允许你使用参数化查询,例如:
dbContext.SomeModels.FromSql("SELECT * FROM dbo.Blogs WHERE Name = @p0", blogName);
.Include(b => b.Posts)
,您可以加入另一个表,如此处所示:https://docs.efproject.net/en/latest/querying/raw-sql.html#composing-with-linq中的@nam。 - diegosaswDbContext
而不是 DbSet
怎么样?@iberodev - ManirajSS
dbContext
是否已正确初始化为Entities
? - James Joyce Alano