Che cosa è l'equivalente didb.database.ExecuteSQLCommand equivalente in EF 7
db.Database.ExecuteSqlCommand(Sql.ToString());
in Entity Framework 7? .FromSQL() nella beta 4, ma non ho visto nulla di quanto sopra.
Che cosa è l'equivalente didb.database.ExecuteSQLCommand equivalente in EF 7
db.Database.ExecuteSqlCommand(Sql.ToString());
in Entity Framework 7? .FromSQL() nella beta 4, ma non ho visto nulla di quanto sopra.
La funzione non è ancora stata implementata. Monitora i suoi progressi utilizzando il numero #624. Ecco un metodo di estensione approssimativo che puoi utilizzare per ora.
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();
}
}
usare in questo modo:
db.Database.AsRelational().ExecuteSqlCommand("EXEC MySproc");
Nota, questo non tiene conto di eventuali transazione attiva.
Creerò un'estensione su DbContext che legge il connectiontring e genera un SqlConnection separato con SqlCommand. Forse quella sarebbe la mia soluzione "temporanea" allora :) – NicoJuicy
@NicoJuicy Buona idea. :) Ho aggiornato la mia risposta. – bricelam
Dovresti usare "using" e lasciare il try catch ... Non saprai che qualcosa va storto qui. Accettata la tua risposta Qual è il motivo per cui estendi RelationalDatabase? Ho esteso DbContext in modo da poter usare come db.executeSql ("SQL QUERY"); (ho appena iniziato ad usare Asp.Net 5 quindi, quindi mi illumini ^^) – NicoJuicy
Volevo solo fornire un aggiornamento del modo più recente per utilizzare questo con Entity Framework Core RC1.
C'è un estensione per il DatabaseFacade classe nel Microsoft.Data.Entity spazio dei nomi che è possibile utilizzare come segue:
_dbContext.Database.ExecuteSqlCommand("EXEC MySproc");
Questo è stato spostato nello spazio dei nomi 'Microsoft.EntityFrameworkCore' in RTM –
** Aggiornamento ** - Attualmente, 'ExecuteSQLCommand' può essere utilizzato in Entity Framework Core. Tuttavia, è necessario aggiungere 'using Microsoft.EntityFrameworkCore;' – kimbaudi