db.database.ExecuteSQLCommand equivalente en EF 7

asp.net-core asp.net-core-mvc entity-framework entity-framework-core

Pregunta

Cuál es el equivalente de

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

en Entity Framework 7? Vi .FromSQL () en beta 4, pero no he visto nada de lo anterior.

Respuesta aceptada

La característica aún no está implementada. Sigue su progreso usando el problema # 624 . Aquí hay un método de extensión en bruto que puede utilizar por ahora.

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();
    }
}

Úsalo así:

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();
    }
}

Tenga en cuenta, esto no tiene en cuenta ninguna transacción activa.


Respuesta popular

Solo quería proporcionar una actualización de la última forma de usar esto con Entity Framework Core RC1.

Hay una extensión en la clase DatabaseFacade en el espacio de nombres Microsoft.Data.Entity que puede usar de la siguiente manera:

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué