7

Whats odpowiednikdb.database.ExecuteSQLCommand równowartość w EF 7

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

w Entity Framework 7? Widziałem .FROMSQL() w wersji beta 4, ale nie widziałem nic do powyższego.

+0

** Aktualizacja ** - Obecnie 'ExecuteSQLCommand' może być używane w Entity Framework Core. Jednak musisz dodać 'using Microsoft.EntityFrameworkCore;' – kimbaudi

Odpowiedz

8

Ta funkcja nie jest jeszcze zaimplementowana. Śledź jego postępy, używając numeru #624. Oto prosta metoda rozszerzenia, której możesz teraz użyć.

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

Używaj go tak:

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

Uwaga ta nie bierze pod uwagę każdą aktywną transakcję.

+0

Będę tworzył rozszerzenie na DbContext, które odczytuje connectionstring i generuje oddzielne SqlConnection z SqlCommand. Być może to byłaby moja "tymczasowa" naprawa wtedy :) – NicoJuicy

+1

@NicoJuicy Dobry pomysł. :) Zaktualizowałem swoją odpowiedź. – bricelam

+0

Powinieneś użyć "używając" i upuścić próbę złapać ... Nie będziesz wiedział, że coś pójdzie nie tak. Zaakceptowałeś swoją odpowiedź. Każdy powód, dla którego można rozszerzyć RelationalDatabase? Rozszerzyłem DbContext, aby można było użyć jak db.executeSql ("SQL QUERY"); (właśnie zacząłem używać Asp.Net 5, więc oświeć mnie ^^) – NicoJuicy

6

Po prostu chciałem dostarczyć aktualizację najnowszego sposobu użycia tego dla Entity Framework Core RC1.

Jest extentsion na DatabaseFacade klasy w Microsoft.Data.Entity nazw, które można wykorzystać w następujący sposób:

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

Zostało to przeniesione do przestrzeni nazw 'Microsoft.EntityFrameworkCore' w RTM –

Powiązane problemy