SQL im Entity Framework ausführen?

entity-framework

Frage

Gibt es eine Möglichkeit, eine SQL-Anweisung direkt aus den vom Entity Framework generierten Aufrufen auszuführen? Oder muss ich eine Prozedur erstellen und diese dann über das Entity-Framework aufrufen?

Akzeptierte Antwort

War neulich für mich selbst googeln, dies ist das Beispiel, von dem ich hoffe, dass es hilft

  static void ExecuteSql(ObjectContext c, string sql)
    {
        var entityConnection = (System.Data.EntityClient.EntityConnection)c.Connection;
        DbConnection conn = entityConnection.StoreConnection;    
        ConnectionState initialState = conn.State;
        try
        {
            if (initialState != ConnectionState.Open)
                conn.Open();  
            using (DbCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();
            }
        }
        finally
        {
            if (initialState != ConnectionState.Open)
                conn.Close(); 
        }
    }

Beliebte Antwort

In EF 4.0 ist dies ziemlich einfach, da es in ObjectContext neue Methoden gibt, mit denen Sie Speicherbefehle (z. B. SQL) direkt ausführen können:

Siehe dies: ExecuteStoreCommand

Wenn Sie noch EF 3.5 SP1 verwenden, können Sie immer noch eine Abfrage direkt an der Datenbank ausführen, wenn Sie dies wirklich möchten:

var econn = ctx.Connection as EntityConnection;
var dbconn = econn.StoreConnection;

An diesem Punkt haben Sie Zugriff auf eine Verbindung (dbconn) zur zugrunde liegenden Datenbank, sodass Sie normalen ADO.NET-Code verwenden können, um Abfragen usw. auszuführen.

Hoffe das hilft

Alex



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum