【发布时间】:2019-11-06 10:59:15
【问题描述】:
我在我的 asp.net 应用程序中使用实体框架 6,并使用如下原始查询:
string studentName = ctx.Database.SqlQuery<string>(
"Select studentname from Student where studentid=1").FirstOrDefault();
现在我正在将我的应用程序移动到 asp.net 核心,但如果不使用 DbSet 类型,我无法找到原始 sql 查询。
var students = context.Students
.FromSql("Select * from Students where Name = 'Bill'")
.ToList();
但这并不能解决我的解决方案。
是否有开发用于运行 sql 查询的扩展程序?
【问题讨论】:
-
真正的问题是为什么要使用 EF 来运行原始查询?以这种方式使用 EF 收获甚微。最好使用像 Dapper 这样的微 ORM 并避免开销。或者只使用正确的 LINQ 查询,即
context.Students.Where(s=>s.Id=1).Select(s=>s.Name).Take(1) -
@phuzi,文档说“SQL 查询必须返回实体类型的所有属性的数据。”它说我不能使用原始查询。我的意思是它说我不再使用实体框架了。
-
@PanagiotisKanavos,我有一些与多个表相关的复杂查询。所以我在旧版本中运行这些查询。所以这是一个非常糟糕的情况。开发人员不会将应用程序移至 cere。
标签: entity-framework entity-framework-core