试图找出如何使用EF Core 1.1.1.0执行原始SQL查询
我曾经能够像这样创建一个连接和命令:
var connection = _context.Database.GetDbConnection();
var command = connection.CreateCommand()
command.CommandText = "...";
// etc etc
但这似乎不再可用了。
我在DbContext中找不到任何明显的东西答案 0 :(得分:2)
看起来您可以执行以下操作:
var blogs = context.Blogs
.FromSql("YOUR QUERY HERE")
.ToList();
或者,如果您没有想要使用的模型,您应该能够:
context.Database.ExecuteSqlCommand("YOUR QUERY HERE");
来源:https://docs.microsoft.com/en-us/ef/core/querying/raw-sql https://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand(v=vs.113).aspx
答案 1 :(得分:2)
使用原始SQL查询时需要注意几个限制:
SQL查询只能用于返回属于的实体类型 你的模特。我们的积压工作有一项增强功能可以启用 从原始SQL查询返回ad-hoc类型。
SQL查询必须返回实体类型的所有属性的数据。
结果集中的列名必须与列名相匹配 属性映射到。注意这与EF6.x不同 原始SQL查询和结果忽略了属性/列映射 设置列名称必须与属性名称匹配。
SQL查询不能包含相关数据。但是,在很多情况下你 可以使用Include运算符在查询之上进行组合以返回 相关数据(见包括相关数据)。
https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
您可以将Dapper liberary用于复杂的原始SQL。
答案 2 :(得分:1)
我的坏。我没有将Microsoft.EntityFrameworkCore.SqlServer安装到项目中。
除非应该删除这个问题,否则我会将JonRB的答案标记为正确