具有Entity Framwork Core 1.1.1.0的原始SQL查询

时间:2017-03-08 03:55:03

标签: entity-framework-core

试图找出如何使用EF Core 1.1.1.0执行原始SQL查询

我曾经能够像这样创建一个连接和命令:

var connection = _context.Database.GetDbConnection();
var command = connection.CreateCommand()
command.CommandText = "...";
// etc etc

但这似乎不再可用了。

我在DbContext中找不到任何明显的东西

3 个答案:

答案 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的答案标记为正确