[英]How to run a raw SQL query from DataContext in EntityFramework Core
我有一个DataContext
实例,我想用它来执行原始 SQL(如果可能)。 我记得“常规”EntityFramework 6 可以做到这一点( https://msdn.microsoft.com/en-us/library/bb361109(v=vs.110).aspx )但我找不到任何方法在核心。 我听说过FromSql
扩展方法( https://docs.microsoft.com/en-us/ef/core/querying/raw-sql )但是在myContext.myTable
时没有出现。
下面是我的参考资料(图片是因为我懒得打出来)。
我意识到这是一个老问题,但无论如何这里有一些答案。
您有 2 个选项,具体取决于您要执行的操作:
using Microsoft.EntityFrameworkCore;
...
var sql = "select * from clients";
var clients = _clientDbContext.Clients.FromSql(sql);
请注意,这要求您拥有一个与 sql 语句的输出以及在您的 DbContext 实现中定义的相关 DbSet 相匹配的 Client 实体。
using (var conn = (SqlConnection)((DbContext)_clientDbContext).Database.GetDbConnection())
{
conn.Open();
using (var reader = new SqlCommand(sql, conn).ExecuteReader())
{
...
}
conn.Close();
}
现在您可以访问原始 DbConnection 和 ADO.NET 世界,并且可以使用 SqlCommand、DataTables 等来运行任何 SQL 并管理自己返回的数据。
我会提醒您不要混合使用实体框架和直接 SQL 数据库更新 - 但这对于获取一小部分数据很有用 - 可能是配置值,或运行存储过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.