db.database.ExecuteSQLCommand équivalent dans EF 7

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

Question

Quel est l'équivalent de

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

dans Entity Framework 7? J'ai vu .FromSQL () en version 4, mais je n'ai rien vu de ce qui précède.

Réponse acceptée

La fonctionnalité n'est pas encore implémentée. Suivez ses progrès à l'aide du numéro 624 . Voici une méthode d'extension brute que vous pouvez utiliser pour l'instant.

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

Utilisez-le comme ceci:

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

Notez que cela ne prend en compte aucune transaction active.


Réponse populaire

Je voulais juste fournir une mise à jour de la dernière façon de l'utiliser avec Entity Framework Core RC1.

Il existe une extension de la classe DatabaseFacade dans l'espace de noms Microsoft.Data.Entity que vous pouvez utiliser comme suit:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow