sql >> Database teknologi >  >> RDS >> PostgreSQL

Entity Framework ObjectContext -> rå SQL-kald til native DBMS

Craigs svar, selvom det ikke virkede som det er, fik mig til at kigge i den rigtige retning. Det viser sig, at der er en EntityConnection.StoreConnection-egenskab, som giver dig forbindelse til det underliggende DBMS. Så at udføre "native" SQL er så let som dette:

    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();  // open connection if not already open
            using (DbCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();
            }
        }
        finally
        {
            if (initialState != ConnectionState.Open)
                conn.Close(); // only close connection if not initially open
        }
    }


  1. Forespørgsel for kun at hente tal fra en streng

  2. generel sql fejl

  3. PHP PDOException:SQLSTATE[HY093]:Ugyldigt parameternummer

  4. mysql join 3 tabeller