Entity framework EF 7中的db.database.ExecuteSQLCommand等效命令

Entity framework EF 7中的db.database.ExecuteSQLCommand等效命令,entity-framework,asp.net-core,asp.net-core-mvc,entity-framework-core,Entity Framework,Asp.net Core,Asp.net Core Mvc,Entity Framework Core,这相当于什么 db.Database.ExecuteSqlCommand(Sql.ToString()); 在实体框架7中?我在beta 4中看到了.FromSQL(),但没有看到上面的任何内容。该功能尚未实现。使用问题跟踪其进度。这里是一个粗略的扩展方法,您现在可以使用 public static int ExecuteSqlCommand(this RelationalDatabase database, string sql) { var connection = databas

这相当于什么

db.Database.ExecuteSqlCommand(Sql.ToString());

在实体框架7中?我在beta 4中看到了.FromSQL(),但没有看到上面的任何内容。

该功能尚未实现。使用问题跟踪其进度。这里是一个粗略的扩展方法,您现在可以使用

public static int ExecuteSqlCommand(this RelationalDatabase database, string sql)
{
    var connection = database.Connection;
    var command = connection .DbConnection.CreateCommand();
    command.CommandText = sql;

    try
    {
        connection.Open();

        return command.ExecuteNonQuery();
    }
    finally
    {
        connection.Close();
    }
}
像这样使用它:

db.Database.AsRelational().ExecuteSqlCommand("EXEC MySproc");

注意,这并不考虑任何活动事务。

只是想提供一个最新的方法,用于实体框架核心RC1

Microsoft.Data.Entity命名空间中的DatabaseFacade类上有一个扩展,可按如下方式使用:

_dbContext.Database.ExecuteSqlCommand("EXEC MySproc");

我将在DbContext上创建一个扩展,它读取connectionstring并使用SqlCommand生成一个单独的SqlConnection。也许这就是我的“临时”解决方案:)你应该使用“使用”的方式,然后放弃try-catch。。。你不会知道这里出了什么问题。我接受了你的回答。你为什么要扩展RelationalDatabase?我扩展了DbContext,这样您就可以使用db.executeSql(“SQL查询”);(刚开始使用Asp.Net 5,所以,所以enlight me^^)更新了代码,我真的很讨厌try-catch,因为它隐藏了错误:)它不会隐藏错误——没有catch。它只是确保在出现错误时关闭连接。此外,DbCommand不打算被释放。Dispose方法是从组件派生的不幸结果。该方法已移动到RTMUpdate中的
Microsoft.EntityFrameworkCore
命名空间-当前,可以在Entity Framework Core中使用
ExecuteSQLCommand
。但是,您需要使用Microsoft.EntityFrameworkCore添加