EF 7中的db.database.ExecuteSQLCommand等效项

Nic*_*icy 7 entity-framework entity-framework-core asp.net-core-mvc asp.net-core

什么相当于

db.Database.ExecuteSqlCommand(Sql.ToString());
Run Code Online (Sandbox Code Playgroud)

在实体框架7?我在测试版4中看到.FromSQL(),但是没有看到任何内容.

bri*_*lam 8

该功能尚未实现.使用问题#624跟踪其进度.这是您现在可以使用的粗略扩展方法.

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

db.Database.AsRelational().ExecuteSqlCommand("EXEC MySproc");
Run Code Online (Sandbox Code Playgroud)

请注意,这不会考虑任何活动事务.


Mat*_*ers 7

只是想为Entity Framework Core RC1提供最新的使用方式的更新.

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

_dbContext.Database.ExecuteSqlCommand("EXEC MySproc");
Run Code Online (Sandbox Code Playgroud)

  • 这已移至RTM中的"Microsoft.EntityFrameworkCore"命名空间 (3认同)